【问题标题】:Python, writing an integer to a '.txt' filePython,将整数写入“.txt”文件
【发布时间】:2013-04-21 12:45:09
【问题描述】:

使用 pickle 函数是否是将整数写入文本文件的最快、最可靠的方法?

这是我目前的语法:

import pickle

pickle.dump(obj, file)

如果有更强大的替代方案,请随时告诉我。

我的用例是编写用户输入:

n=int(input("Enter a number: "))
  • 是的,人类需要阅读并可能对其进行编辑
  • 文件中会有 10 个数字
  • Python 可能需要稍后再读回它。

【问题讨论】:

  • 你的用例是什么?
  • 哦,抱歉没有详细说明,但我是用它来将整数(用户输入)写入 .txt 文件。
  • 你的问题还不清楚。文件将如何使用?如果您的程序需要稍后读取文件并检索数字,pickle 可能是合适的。否则,它可能不是。
  • 主要问题是:人类是否需要阅读此文件?编辑它?一个非python程序可能想要阅读它?编辑它?文件中有多少数据?会不会只有一个数字?很多数字?

标签: python performance pickle robustness


【解决方案1】:

我认为这样做更简单:

number = 1337

with open('filename.txt', 'w') as f:
  f.write('%d' % number)

但这真的取决于你的用例。

【讨论】:

  • 我真的看不出速度有什么不同。
  • 这段代码给人一种非常传统的感觉。新代码中一般要避免旧式字符串格式,文件应该使用the with statement打开。
  • @Lattyware 经过多次辩论,我得出结论,旧式字符串格式是一种风格选择,尽管.format 具有更强大的功能,但仍然允许人们根据需要使用它。 . with 应该总是被使用!还有为什么首先要使用格式...str(number)
  • 这不是“允许”与否的问题,只是样式问题,正如您最初所说的那样,文档确实建议在新代码中避免使用旧式字符串格式,这确实是唯一的关于此事的风格建议。通常,在处理其他人可能最终阅读的任何代码时(我认为这是我的所有代码),最好遵循该语言概述的约定,以提高可读性和熟悉度。是的,正如你所说,这里更好的选择是str(number)
  • @Lattyware 尽管我希望如此,但它仍然被 Python 社区普遍接受
【解决方案2】:

result = 1

f = open('output1.txt','w')  # w : writing mode  /  r : reading mode  /  a  :  appending mode
f.write('{}'.format(result))
f.close()

阅读

f = open('output1.txt', 'r')
input1 = f.readline()
f.close()

print(input1)

【讨论】:

    【解决方案3】:

    使用 python 2,您还可以这样做:

    number = 1337
    
    with open('filename.txt', 'w') as f:
      print >>f, number
    

    当我不需要格式化时,我个人会使用它。

    【讨论】:

      【解决方案4】:

      下面会打开一段时间,并在其上附加以下数字。

      def writeNums(*args):
      with open('f.txt','a') as f:
          f.write('\n'.join([str(n) for n in args])+'\n')
      
      writeNums(input("Enter a numer:"))
      

      【讨论】:

        【解决方案5】:

        我刚刚遇到了类似的问题。 我使用了一种简单的方法,将整数保存在变量中,并将变量作为字符串写入文件。如果您需要添加更多变量,您始终可以使用“a+”而不是“w”来追加而不是写入。

        f = open("sample.txt", "w")
        integer = 10
        f.write(str(integer))
        f.close()
        
        

        以后你可以使用float来读取文件,你不会抛出错误。

        【讨论】:

          猜你喜欢
          • 2015-01-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-02-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多