Skip to main content
 首页 » 编程设计

python之将打印语句写入文本文件

2025年05月04日11jpfss

我正在尝试将所有带有 *.txt 的文件打印到文本文件中,文件夹如下所示

\文件夹 文件1.txt 文件2.txt 文件3.csv

我的 python 代码如下所示:

import glob 
for text in glob.glob('*.txt'): 
    print text 
 
file=open('output.txt', 'w') 
file.write(text) 
file.close() 

运行后,我进入空闲窗口 文件1.txt 文件2.txt 但是我的output.txt里面只写了file2.txt。

我认为这是获得结果的快速方法,有没有一种方法可以强制将“文本”完整地写入输出文件?

请您参考如下方法:

您实际上是在输入 text 的全部值在输出文件中; text只是不是你想的那样。

text 唯一的地方被分配到 for text in glob.glob('*.txt') 中环形。循环结束后,它将保留为分配给它的最后 值,即'file2.txt'。 .

有几种方法可以实现您想要做的事情。如果您是从命令行而不是从 IDLE 运行脚本,您可以执行类似(在 Unix 中)的操作

python my_script.py | tee output.txt 

将脚本的所有输出复制到文件 output.txt除了正常 print 之外,无需在 Python 代码中执行任何操作

你也可以直接写出来而不是调用print作为suggested by Lattyware ,尽管这不会同时执行这两项操作,除非您手动执行这两项操作。

为了使这更容易一些,您可以编写一个函数来调用而不是 print这样既方便又方便。像这样的东西:

with open('output.txt', 'w') as f: 
    def my_print(str): 
        print str 
        f.write(str + '\n') 
 
    for filename in glob.glob('*.txt'): 
        my_print(filename) 

如果你真的想使用 print,你也可以做一些更高级的事情语句:重新分配 sys.stdout ,从 Python 执行所有打印的特殊对象。这可能比您需要的更复杂,但如果您想查看它,请询问,我会向您展示。