-3

我想解析一个名称存储在变量中的文件。

log_file = archive_log
for line in print log_file:
    print line

这里 archive_log 文件包含已归档文件的列表。当我运行此代码时,循环是在archive_log 上运行的,而不是在archive_log 的内容上。所以我得到像

a
r
c
h
i
v
e
_
l
o
g

如何确保 for 循环在文件内容上运行?在这里我需要在变量中指定文件名,因为将来我必须根据日期计算文件名。

我正在运行 python 2.4.3。收到以下错误:

文件“daily_archive.py”,第 31 行,open(log_file) as f: ^ SyntaxError: invalid syntax

4

2 回答 2

2

您所描述的可能是以下原因造成的:

log_file = 'archive_log'
for line in log_file:
    print line

(您打印字符串中的每个字符log_file

但是,您似乎想要这个:

log_file = 'archive_log'
with open(log_file) as f:
    for line in f:
        print line

请记住,路径是相对的,并且取决于您运行代码的位置(从何处)。最好使用绝对路径。您可以使用例如。os.path.join()根据文件名(log_file,示例中的值为'archive_log')和脚本文件的路径(__file__)获取绝对路径。

编辑:以下是 Python 2.4 的解决方案(Python 2.5支持withstatement):

log_file = 'archive_log'
try:
    f = open(log_file)
    for line in f:
        print line
finally:
    f.close()
于 2013-08-01T15:27:02.490 回答
0

这个问题不是很好,但我想这就是OP的意思:

filename = 'archive_log'
file = open(filename, 'r')

for line in file.readlines()
  print line

file.close()
于 2013-08-01T15:35:32.403 回答