python - 使用修改重写文件

标签 python replace

我有一个名为 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/

相关文章:

Java字符串replaceAll正则表达式

将字符串的每个单词中除第一个字符之外的所有字符替换为小写

javascript - 如何使用 python Web 服务器运行 javascript 代码?

python - 让 distutils 安装预编译的库?

python - 根据概率从python列表中选择元素

Java从字符串的开头和结尾删除所有非字母数字字符

python-3.x - 如何删除并仅保留某些非字母数字字符?

search - Vim:搜索模式并将文本添加到出现该模式的每行末尾

Python 'RequestsHandler' 对象没有属性 'filters'

python - 为什么这个异常不打印 0?