【问题标题】:How to save a list and access values in a list in Python--- .txt file如何在 Python 中保存列表并访问列表中的值--- .txt 文件
【发布时间】:2012-11-17 01:22:01
【问题描述】:

我想创建一个模块来检查一个数字是否是素数,并列出它之前的所有素数。

如果模块中的函数必须在每次创建时都生成素数列表,那么它会花费一些时间。

如何打开与程序所在文件夹位于同一文件夹中的 .txt 文件,然后让它访问其中的数据并以此为基础创建一个列表?功能完成后,.txt 文件将保存为列表。我还需要一些关于如何将文件实际保存在给定位置的指导。

任何建议或提示都会很棒。谢谢!

【问题讨论】:

    标签: python list text


    【解决方案1】:

    我会腌制一个set 对象,你可以这样做:

    import cPickle as pickle
    
    primes_set = set([2,3,5])
    
    pickle.dump(primes_set, open('primes_set.pkl', 'wb')) 
    
    my_primes = pickle.load(open('primes_set.pkl', 'rb')) # to load the object
    

    创建pickle文件后,你可以这样使用它:

    def get_primes(my_nums):
        '''
        Return only prime numbers from inputted list.
        '''
        my_primes = pickle.load(open('primes_set.pkl', 'rb'))
        return [num for num in my_nums if num in my_primes]
    

    【讨论】:

    • 是否可以腌制list 对象?在我看来,这样会更好。
    • 是的,你可以像腌制一组一样腌制一个列表。
    • 泡菜绝对值得学习。在这种情况下,您只是保存一个平面列表,还有其他同样简单的解决方案。但是有一天,您将需要保存一个复杂的深层嵌套结构,并且您会很高兴知道如何在一行中完成它。
    【解决方案2】:

    看看python中的io http://docs.python.org/2/tutorial/inputoutput.html

    因为你似乎在做数字运算,我会使用 pytables(hdf5 二进制文件)来保存加载和更新数组

    http://www.pytables.org/moin

    【讨论】:

      【解决方案3】:

      您有多种选择。如果要将列表保存为列表,Pickle 可能是最好的选择。

      如果您不介意处理您的 txt 文件,那么您可以将其存储为 csv,python 会轻松将其转回列表。

      【讨论】:

      • 查看 Pickle 模块文档,我发现有一个简单的方法可以使用 pickle.dump(object, file)object = pickle.load(file)file 参数的格式是什么?它是我硬盘上文件的目录位置吗?还是文件名?谢谢!
      • 那些是类似文件的对象。获取类似对象的文件的“正常”方法是使用 open() 并打开磁盘上的文件,但您可以通过其他方式获取它们,例如 tempfile 模块或使用 StringIO。
      【解决方案4】:

      要打开文件,只需使用

      filereader = open("example.txt")
      

      那么变量 filereader 将包含文件的数据。

      allprimes = []
      for line in filereader:
          allprimes.append(int(line)) #assuming one number is stored per line
      

      allprimes 现在将包含文件中存储的所有数字。

      【讨论】:

      • 好的,我知道它是如何工作的。我将如何保存文件?以及如何让 Python 将 .txt 文件保存为每行一个数字?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-23
      • 2021-10-27
      • 2014-11-16
      • 1970-01-01
      • 2017-11-05
      • 1970-01-01
      相关资源
      最近更新 更多