这个python代码中有什么问题?

时间:2014-11-14 05:06:05

标签: python

此代码中有什么问题:我只是传递一个现有文件,然后使用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而不是预期的输出。

1 个答案:

答案 0 :(得分:2)

您可能只想打开文件并编写当前内容而不先删除文件:

with open(arg1, "w") as f:
    for line in _list:
        f.write(line)

这就是open()的工作方式。

  

第一个参数是包含文件名的字符串。第二个参数是另一个字符串,其中包含一些描述文件使用方式的字符。模式可以是' r'当只读取文件时,' w'仅用于写入(将擦除具有相同名称的现有文件),并且' a'打开要追加的文件;写入文件的任何数据都会自动添加到最后。 ' R +'打开文件进行读写。 mode参数是可选的; ' R'将被假设,如果它被省略。