我正在编写一个程序,该程序需要一个.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()
答案 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)
请确保您正确缩进此代码,否则会出现错误。