如何在不读取整个文件的情况下更改输出文件名?

时间:2017-09-05 23:08:55

标签: python import fwrite

因此,我使用它来替换文件中的文本odirx,然后将其写入另一个文件。但我希望输出文件名也是sm_0120.txt而不是sm_template2.txt

replacements = {'odirx':'0120'}

with open('/dir/sm_template.txt') as infile, open('/dir/sm_template2.txt', 'w') as outfile:
    for line in infile:
        for src, target in replacements.items():
            line = line.replace(src, target)
        outfile.write(line)

我该怎么做?

它可以在读完后写出整个文件,但我想在不读取整个文件的情况下这样做

相关: replacing text in a file with Python

TRIAL

如果这是我唯一的选择,我还可以阅读

replacements = {'odirx':'0120'}

with open('/dir/sm_template.txt') as infile, open('/dir/sm_template2.txt', 'w') as outfile:
        for line in infile:
            for src, target in replacements.items():
                line = line.replace(src, target)
            lines.append(line)
            outfile = os.path.join(os.path.normpath(os.getcwd()+os.sep+"sm_"+os.sep+target+os.extsep+"txt"))

我怎么写出来?

2 个答案:

答案 0 :(得分:0)

不幸的是,您必须编写一个新文件,因为您将其作为流的一部分进行修改,没有办法解决这个问题

虽然澄清,但确实存在复制文件https://stackoverflow.com/a/123212/1699398

的功能

答案 1 :(得分:0)

使用os.rename:

os.rename('/dir/sm_template2.txt', '/dir/sm_0120.txt')