我已经在这一天待了几天。这就是我想要做的事情:
我的代码片段:
if mode == 'a':
print buffer
print fn
f = open(fn,mode)
f.write(buffer)
#f.write("\nfoo,bar")
f.close()
print f.closed
os.rename(".\\out\\" + fn, ".\\out\\" + fn[0:17]+tdy[0:4]+ "_" + tdy[5:7] + "_" + tdy[8:10] + ".csv")
其他信息:
模式确实=='a'它进入循环。
buffer
打印。打印为多行csv数据字符串,如:
foo, bar, foo, bar
foo, bar, foo, bar
foo, bar, foo, bar
fn
是我正在尝试打开并正确打印的正确文件名。
f.closed
返回True
os.rename
可以使用并重命名该文件。当我打开它时,缓冲区没有被追加。
我尝试在关闭之前添加flush()
。
我没有重命名就试过了。
我试图附加一个硬编码字符串。
有什么想法吗?
答案 0 :(得分:2)
您正在处理两个文件。
您打开fn
以写入当前目录,但您重命名文件'.\out\' + fn
。
打开fn
时,请确保使用正确的目录:
f = open(r'.\out\' + fn ,mode)
请注意,在Windows上,您也可以使用/
分隔符,这样更容易处理,因为您不必使用原始字符串或转义斜杠。此外,最好使用os.path.join()
来处理目录和文件:
filename = os.path.join('./out', fn)
然后在整个函数中使用filename
。