如何在Python中使用命令行读取pickle文件



我在电脑上有两个pickle文件,我想把它加载到我的脚本中。我写的这段代码能在python中工作吗?

import sys
import pickle
filename1 = sys.argv(1)
filename2 = sys.argv(2)

def read_file(filename1,filename2):   

with open(filename1, 'rb') as file1:         
file1=pickle.load()

with open(filename1, 'rb') as file2:         
file2=pickle.load()
return file1
return file2
sys.exit()

如前所述:

1 # Load the dictionary back from the pickle file.
2 import pickle
3 
4 favorite_color = pickle.load( open( "save.p", "rb" ) )
5 # favorite_color is now { "lion": "yellow", "kitty": "red" }

所以在你的情况下,你可以做:

def read_file(filename1,filename2):   

with open(filename1, 'rb') as file1:         
f1=pickle.load(file1)

with open(filename1, 'rb') as file2:         
f2=pickle.load(file2)
return f1,f2

这里有一些东西不太管用:

  • 您的第二个with-子句不在您的函数中,您的返回也不在
  • 函数只能返回一次。当python到达函数内部的第一个返回时,它将退出该函数。但是您可以同时返回多个内容,例如使用return file1, file2
  • 你的泡菜装载量正好相反。像这样,您可以用您对pickle.load()的调用(注意它没有得到任何参数(为您重新定义file1file2变量——您想要的是将打开的文件传递给pickle.load,然后将其输出保存到一个新变量
  • 您从未实际调用过read_file函数
  • 你的压痕好像掉了
  • sys.argv是一个列表,你不能称它(圆括号,像sys.argv(1)(,但你可以索引它(方括号sys.argv[1](
import sys
import pickle

def read_file(filename1,filename2):   

with open(filename1, 'rb') as file1:         
data1 = pickle.load(file1)

with open(filename1, 'rb') as file2:         
data2 = pickle.load(file2)

return data1, data2

filename1 = sys.argv[1]
filename2 = sys.argv[2]
your_data = read_file(filename1, filename2)
print(your_data)  # Now you use your data, i used print as an example
sys.exit()  # You usually only write that if you specifically need to

进一步建议:

您不一定要制作一个函数来处理两个文件,也可以只制作一个功能来处理一个文件并调用两次。

import pickle

def read_file(filename):   
with open(filename, 'rb') as file1: 
data = pickle.load(file1)
return data1

filename1 = sys.argv[1]
filename2 = sys.argv[2]
your_data = read_file(filename1), read_file(filename2)
print(your_data)

最新更新