在python中更改目录-无法识别字符串

时间:2018-07-11 14:36:51

标签: python json

我正在学习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 /是目录名。如上所述,相同的代码可以更早地工作。有指针吗?

1 个答案:

答案 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') -您只是创建了该目录,因此它显然是空的。

我猜您想创建ba作为当前目录的子目录,而不是后者在前一个目录中。创建b后不做os.chdir('a')显然可以解决此问题;更普遍的是,除非您特别想递归地创建一个深层的嵌套目录序列,否则程序几乎不需要切换它们的工作目录。

不用说,

a

可以改写而无需更改工作目录;

os.chdir('a')
newfile = open('c', 'w')

在这种普通情况下,newfile = open(os.path.join(['a', 'c']), 'w') 也适用;但是如果您在目录名和/或文件名位于变量中进行非平凡的处理,则需要了解更通用的open('a/c', 'w')语法。