此代码中有什么问题:我只是传递一个现有文件,然后使用os.remove()
删除它,然后用另一个内容写它。但该文件显示以前的内容未更新一个。片段:
#!/usr/bin/env python
import sys
import os
arg1=sys.argv[1]
_list = ['a', 'b', 'c']
os.remove(arg1)
hd = open(arg1, 'w')
for line in _list:
hd.write(line)
hd.close()
假设我的文件包含以下内容: output1 :
p
q
r
s
删除文件(os.remove()
)后,重新创建相同的文件并覆盖列表中的内容。预期产出:
a
b
c
但我得到output1
而不是预期的输出。
答案 0 :(得分:2)
您可能只想打开文件并编写当前内容而不先删除文件:
with open(arg1, "w") as f:
for line in _list:
f.write(line)
这就是open()的工作方式。
第一个参数是包含文件名的字符串。第二个参数是另一个字符串,其中包含一些描述文件使用方式的字符。模式可以是' r'当只读取文件时,' w'仅用于写入(将擦除具有相同名称的现有文件),并且' a'打开要追加的文件;写入文件的任何数据都会自动添加到最后。 ' R +'打开文件进行读写。 mode参数是可选的; ' R'将被假设,如果它被省略。