Jef*_*eff 1 python glob text-files
我试图用*.txt打印所有文件到文本文件,文件夹看起来像这样
\ folder file1.txt file2.txt file3.csv
我的python代码如下所示:
import glob
for text in glob.glob('*.txt'):
print text
file=open('output.txt', 'w')
file.write(text)
file.close()
Run Code Online (Sandbox Code Playgroud)
运行之后,我进入空闲窗口file1.txt file2.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
Run Code Online (Sandbox Code Playgroud)
将所有输出从脚本复制到文件,output.txt而不必在Python代码中执行任何操作,而不是正常print的.
您也可以直接将其写出来,而不是print按照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)
Run Code Online (Sandbox Code Playgroud)
如果你真的想要使用print语句sys.stdout,你也可以做一些有点发烧友的事:重新分配,从Python完成所有打印的特殊对象.这可能比你需要的更复杂,但如果你想看到它,我会告诉你.
| 归档时间: |
|
| 查看次数: |
3934 次 |
| 最近记录: |