为什么目录嵌套?

时间:2018-08-02 22:00:11

标签: python

我正在编写一个程序,该程序需要一个.csv文件,并将每一行写入到新创建的目录(每个目录中有1个xml文件)中的xml文件中。它有效,但是我的目录嵌套了。我该如何修改以免嵌套?

import os, csv

metadata = csv.reader(open('metadata.csv'))

row_num = 0
for row in metadata:
    if row_num == 0:
        tags = row
    else:
        os.makedirs('submission-%d' % row_num)
        os.chdir('submission-%d' % row_num)
        out_file = open('metadata-xml-%d.xml' % row_num, 'w')
        out_file.write('<submissionData>' + '\n')
        for i in range(len(tags)):
            out_file.write('    ' + '<' + tags[i] + '>' + row[i] + '</' + tags[i] + '>' + '\n')
        out_file.write('</submissionData>')
        print(file=out_file)
    row_num +=1

out_file.close()

3 个答案:

答案 0 :(得分:1)

在创建新目录之前,请使用os.chdir进入目录。在os.chdir("..")分支的末尾添加else

else:
    os.makedirs('submission-%d' % row_num)
    os.chdir('submission-%d' % row_num)
    # Do your stuff, close the file
    print(file=out_file)
    os.chdir("..")

答案 1 :(得分:0)

不要使程序表现得像人一样,不要使用folder = 'submission-%d' % row_num name = os.path.join( folder, 'metadata-xml-%d.xml' % row_num) out_file = open( name, 'w')

rest_framework.authtoken

更容易理解。而且您不必担心再绕着子文件夹走动。

答案 2 :(得分:0)

正如lenik所提到的,您无需更改为子目录。如果用以下代码替换else:块,则目录将不会嵌套,并且将按您期望的方式创建:

else:
    dir_name = 'submission-%d' % row_num
    os.makedirs(dir_name)
    file_name = os.path.join(dir_name, 'metadata-xml-%d.xml' % row_num)
    out_file = open(file_name, 'w')
    out_file.write('<submissionData>' + '\n')
    for i in range(len(tags)):
        out_file.write('    ' + '<' + tags[i] + '>' + row[i] + '</' + tags[i] + '>' + '\n')
    out_file.write('</submissionData>')
    print(file=out_file)

请确保您正确缩进此代码,否则会出现错误。