【发布时间】:2012-11-17 01:22:01
【问题描述】:
我想创建一个模块来检查一个数字是否是素数,并列出它之前的所有素数。
如果模块中的函数必须在每次创建时都生成素数列表,那么它会花费一些时间。
如何打开与程序所在文件夹位于同一文件夹中的 .txt 文件,然后让它访问其中的数据并以此为基础创建一个列表?功能完成后,.txt 文件将保存为列表。我还需要一些关于如何将文件实际保存在给定位置的指导。
任何建议或提示都会很棒。谢谢!
【问题讨论】:
我想创建一个模块来检查一个数字是否是素数,并列出它之前的所有素数。
如果模块中的函数必须在每次创建时都生成素数列表,那么它会花费一些时间。
如何打开与程序所在文件夹位于同一文件夹中的 .txt 文件,然后让它访问其中的数据并以此为基础创建一个列表?功能完成后,.txt 文件将保存为列表。我还需要一些关于如何将文件实际保存在给定位置的指导。
任何建议或提示都会很棒。谢谢!
【问题讨论】:
我会腌制一个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 对象?在我看来,这样会更好。
看看python中的io http://docs.python.org/2/tutorial/inputoutput.html
因为你似乎在做数字运算,我会使用 pytables(hdf5 二进制文件)来保存加载和更新数组
【讨论】:
【讨论】:
pickle.dump(object, file) 和 object = pickle.load(file)。 file 参数的格式是什么?它是我硬盘上文件的目录位置吗?还是文件名?谢谢!
要打开文件,只需使用
filereader = open("example.txt")
那么变量 filereader 将包含文件的数据。
allprimes = []
for line in filereader:
allprimes.append(int(line)) #assuming one number is stored per line
allprimes 现在将包含文件中存储的所有数字。
【讨论】:
.txt 文件保存为每行一个数字?