Python保存到文件

Ste*_*fan 59 python python-2.7

我想将一个字符串保存到一个名为python程序的文件中 Failed.py

这是我到目前为止:

myFile = open('today','r')

ips = {}

for line in myFile:
    parts = line.split(' ')
    if parts[1] == 'Failure':
        if parts[0] in ips:
            ips[pars[0]] += 1
        else:
            ips[parts[0]] = 0

for ip in [k for k, v in ips.iteritems() if v >=5]:
    #write to file called Failed.py
Run Code Online (Sandbox Code Playgroud)

war*_*iuc 145

file = open('Failed.py', 'w')
file.write('whatever')
file.close()
Run Code Online (Sandbox Code Playgroud)

这是一个更pythonic版本,它会自动关闭文件,即使包装块中有异常:

with open('Failed.py', 'w') as file:
    file.write('whatever')
Run Code Online (Sandbox Code Playgroud)

  • 这不是编码风格.`file`是[很多其他]的内置函数(https://docs.python.org/2/library/functions.html).它[不推荐](http://stackoverflow.com/questions/9109333/is-it-bad-practice-to-use-a-built-in-function-name-as-an-attribute-or-method- ide)用其他变量来遮蔽这些内置函数. (4认同)
  • `file`在python中不是受保护的单词,不需要使用`file_`,除非你的编码样式指南要求变量的`_`后缀在任何上下文(文件,函数,类,方法)中发生. (2认同)
  • @Anatoly你没有关闭文件 (2认同)
  • @warvariuc谢谢你,你是对的,那么这似乎不是最好的做法 (2认同)

Dav*_*nan 18

您需要再次使用打开文件open(),但这次传递'w'表示您要写入文件.我还建议您使用with以确保在写完文件后关闭该文件.

with open('Failed.txt', 'w') as f:
    for ip in [k for k, v in ips.iteritems() if v >=5]:
        f.write(ip)
Run Code Online (Sandbox Code Playgroud)

当然,您可能希望在输出中包含换行符或其他格式,但基本操作如上所述.

关闭文件的相同问题适用于阅读代码.这应该是这样的:

ips = {}
with open('today','r') as myFile:
    for line in myFile:
        parts = line.split(' ')
        if parts[1] == 'Failure':
            if parts[0] in ips:
                ips[pars[0]] += 1
            else:
                ips[parts[0]] = 0
Run Code Online (Sandbox Code Playgroud)