3

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

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

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

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

4

4 回答 4

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

创建泡菜文件后,您可以像这样使用它:

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]
于 2012-11-17T01:37:11.170 回答
3

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

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

http://www.pytables.org/moin

于 2012-11-17T01:29:11.077 回答
1

你有几个选择。如果要将列表保存为列表,Pickle可能是最好的选择。

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

于 2012-11-17T01:28:57.747 回答
1

为了打开一个文件,只需使用

filereader = open("example.txt")

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

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

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

于 2012-11-17T01:31:35.920 回答