将字符串输出到本地目录

是否可以将从打印语句创建的字符串输出到本地目录中?
如果是,您会使用sysstdout模块吗?

# 回答1


您可以将sys.stdout分配给打开的文件对象。

选择 | 换行 | 行号
  1. f = open("test.txt", 'w')
  2. sys.stdout = f

后续的打印语句将把输出定向到打开的文件。

# 回答2


谢谢!但是,我的文件没有.etc扩展名。它们是唯一的,我需要它们实际上被直接传播到一个目录中。这个是可能的吗?
# 回答3


保存sys.stdout的旧值并在完成后恢复它是一个好主意。

选择 | 换行 | 行号
  1. stdout_old = sys.stdout
  2. sys.stdout = open("test.txt", 'a')
  3. # do stuff
  4. sys.stdout = stdout_old
# 回答4


就我所知没有。信息以文件的形式存储在光盘上。目录不是文件。顺便说一句,文件对象不必有扩展名。
# 回答5


如果您运行的是Linux,则可以通过管道将标准输出直接传输到文件
Program_name.py>输出_打印文件.txt
# 回答6


因此,我使用以下代码尝试了sysstd输出

选择 | 换行 | 行号
  1. import os
  2.  
  3. path = '/Users/felishalawrence/testswps/vol1'  
  4. for file in os.listdir(path):
  5.         newFile = file[:file.rindex("v")]+"v20"
  6. sys.stdout =  '/Users/felishalawrence/testswps/vol1'
  7. print newFile

却一无所获。没有错误,当我删除第5行并再次运行它时,它没有打印出我在IPython笔记本中的结果。输出也不在指定的文件夹中。我做错什么了?我可以重置它吗?如果是这样的话,是如何做到的呢?

# 回答7


在for循环中,您定义了一个值来标识"newfile",但不使用该值执行任何操作。在for循环之后,您可以将
Sys.stdout
在应该将其分配给打开的文件对象时,将其添加到目录。下面的打印语句没有任何用处。

标签: python

添加新评论