我正在尝试将所有带有 *.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 执行所有打印的特殊对象。这可能比您需要的更复杂,但如果您想查看它,请询问,我会向您展示。
