我有一个名为 inputs.txt 的文件,我试图用一个函数的值替换该文件中的一个字符串。问题是我无法写入该文件。我刚开始学习 python,所以为此苦苦挣扎。请提供任何帮助。
当我把它作为一个字符串时,它工作正常
文件内容
[aws_s3://MAC_10]
key_name = ABC/YYZZ/daily
期望的输出
[aws_s3://MAC_2014-12-31]
key_name = ABC/YYZZ/daily/2014-12-31_
我编写了获取时间值的函数
def change_time(match):
match = match.group()
date_time = datetime.datetime.now()
value = str(date_time.strftime('%Y-%m-%d'))
return value
我可以打开文件并读取和匹配内容,但无法写入
f=open('test.txt','w')
print re.sub(r'_[0-9-]+',change_time,string)
将需要更改的第一行输出到stdout,但是如何修改文件内容?
最佳答案
读取和写入同一个文件可能很棘手,但标准库的 fileinput
模块对此提供了很好的支持:
import fileinput
for line in fileinput.input(['inputs.txt'], inplace=True):
print re.sub(r'_[0-9-]+', change_time, line) ,
我给出了 print
的 Python 2 形式,因为它似乎就是您正在使用的。无论如何,在 Python 3 中它会相似且更具可读性:
print(re.sub(r'_[0-9-]+', change_time, line), end='')
无论如何,fileinput
重定向标准输出,以便所有 print
都转到您正在阅读的文件(当 inplace=True
已设置)——您需要打印出您正在阅读的所有内容,并需要进行更改。根据需要处理任意数量的文件(请注意,第一个参数是文件名列表),无论它们有多大等等。
参见 https://docs.python.org/2/library/fileinput.html对于更多,更多:-)
关于python - 使用修改重写文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27723717/