如何在Python --- .txt文件中保存列表并访问列表中的值

时间:2012-11-17 01:22:02

标签: python list text

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

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

如何打开与程序所在文件夹相同的.txt文件,然后让它从中访问数据并根据该文件创建列表?该函数完成后,.txt文件将保存在列表中。我还需要一些关于如何在给定位置实际保存文件的指导。

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

4 个答案:

答案 0 :(得分:4)

我会挑选一个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]

答案 1 :(得分:3)

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

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

http://www.pytables.org/moin

答案 2 :(得分:1)

您有几种选择。如果要将列表另存为列表,Pickle可能是最好的方法。

如果你不介意处理你的txt文件,那么你可以将它存储为csv,python将很容易回到列表中。

答案 3 :(得分:1)

要打开文件,只需使用

即可
filereader = open("example.txt")

然后变量filereader将包含文件的数据。

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

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