我正在学习python,我要完成的操作之一是更改目录。我将目录名称存储在字典中,然后尝试按以下方式访问这些目录:
创建目录:
for i in range(length):
try:
original_umask = os.umask(0)
os.makedirs(item_dict[i], 0755)
finally:
os.umask(original_umask)
for i in range (length):
os.chdir(item_dict[i])
这正在工作。但是,当我稍后尝试通过访问这些目录进行进一步处理时,遇到以下错误:
osdir = os.getcwd()
print " current working directory is " + osdir //works correctly
for i in range (length):
os.chdir((item_dict[i])
Traceback (most recent call last):
File ".\actions.py", line 40, in <module>
os.chdir((item_dict[i]))
WindowsError: [Error 2] The system cannot find the file specified: u'd-025c49f7-116e-4ad1-909e-13cc59b03dc3/'
此处025c49f7-116e-4ad1-909e-13cc59b03dc3 /是目录名。如上所述,相同的代码可以更早地工作。有指针吗?
答案 0 :(得分:1)
<employee idAsig="1" name="GHEORGHE">
<employeeA SOMEMOREDATA/>
</employee>
<employee idAsig="2" name="JON">
<employeeA SOMEMOREDATA/>
</employee>
<employee idAsig="3" name="MIKE">
<employeeA SOMEMOREDATA/>
</employee>
<employee idAsig="4" name="WALTER">
<employeeA SOMEMOREDATA/>
</employee>
<employee idAsig="1" name="ANDREW">
<employeeA SOMEMOREDATA/>
</employee>
<employee idAsig="2" name="BOBBY">
<employeeA SOMEMOREDATA/>
</employee>
更改Python脚本其余部分的当前目录。最好不要完全更改目录,而要使用相对路径来处理目录中的文件。
换句话说,
os.chdir()
最终创建os.mkdir('a')
os.chdir('a')
os.mkdir('b')
os.chdir('b')
并将您留在此目录中;尝试再次a/b
失败,因为此目录内没有os.chdir('b')
-您只是创建了该目录,因此它显然是空的。
我猜您想创建b
和a
作为当前目录的子目录,而不是后者在前一个目录中。创建b
后不做os.chdir('a')
显然可以解决此问题;更普遍的是,除非您特别想递归地创建一个深层的嵌套目录序列,否则程序几乎不需要切换它们的工作目录。
不用说,
a
可以改写而无需更改工作目录;
os.chdir('a')
newfile = open('c', 'w')
在这种普通情况下,newfile = open(os.path.join(['a', 'c']), 'w')
也适用;但是如果您在目录名和/或文件名位于变量中进行非平凡的处理,则需要了解更通用的open('a/c', 'w')
语法。