2012-10-06 50 views
1

我正在阅读学习python硬的方式, 和第15章我想使用导入 argv分配变量和原始输入来获得 用户输入。该脚本是:太多的值来解压

from sys import argv 

script, filename, = argv 

txt = open(filename) 

print " Here's your file %r :" % filename 
print txt.read() 

print " I'll also ask you to type it again: " 

file_again = raw_input ("> ") 

txt_again = open (file_again) 

print txt_again.read() 

运行此脚本后,我得到的错误,太多的值来解压缩。

文件 “ex15.py”,3号线,在 脚本,文件名=的argv
值误差:值过多解压

+0

*您如何运行脚本*? – nneonneo

+0

在通过power shell进行空闲时python filename.py脚本文件名 – user1724593

回答

-1

还有一个额外的逗号

script, filename, = argv 

它应该是

script, filename = argv 
+2

应该不重要:'a,b,= 3,4'在2.7中正常工作。请注意,与正常的Python元组语法一样,尾随逗号将被忽略。 ('a,= b',另一方面,不等于'a = b')。 – nneonneo

0

你是如何运行脚本的?

当你说,

script, filename = argv 

您在argv预计两个项目。第一个是脚本名称,第二个是文件名。如果您尝试运行超过2个参数的脚本,然后你会得到这样的错误

python myscript.py myfile.py somethingelse 

如果你想一个参数传递给脚本,那么你需要指定第三个变量来解压的价值成。像这样

script, filename, option = argv 

此外,它会帮助,如果你粘贴完整回溯

+0

文件“ex15.py”,第3行,在 user1724593

+0

文件“ex15.py”,第3行,在脚本,文件名= argv值错误:解包太多值 – user1724593

2

只是一对夫妇的指针...

from sys import argv 

script, filename, = argv 

在这里,你要导入的argv访问命令行参数,然后期望它包含2个参数 - script(arg 0)和要打印的文件名(arg1)。尽管尾随的逗号不是合成不正确的,但它不是必需的,只是看起来有点奇怪。我在sys的内部正式离开argv,而不是将它拉入当前的命名空间,但这是一个有趣的问题 - 它没有真正的区别。我可能会扔在一个比特的错误处理,以及:

import sys 

try: 
    script, filename = sys.argv 
except ValueError as e: 
    raise SystemExit('must supply single filename as argument') 

txt = (filename) 

print " Here's your file %r :" % filename 
print txt.read() 

所有这一切txt = (name)在这里做的是使TXT文件名具有的价值。我相信你想被制作txt一个文件对象,这样就可以从.read()它:

txt = open(filename) 
print "Here's the file contents of:", filename 
print txt.read() 

print " I'll also ask you to type it again: "  
file_again = raw_input ("> ")  
txt_again = open (file_again)  
print txt.again.read() 

你已经得到了open()这里,但txt.again.read()txt_again.read()否则你会得到一个AttributeError - 所以只是改变这一点,它很好。

另外,文件对象寻求支持,所以你可以只rewind文件(如你读文件到最后,什么都不剩再阅读),通过使用:

txt.seek(0) 
print txt.read() 
0

O.K.所以我发现我的问题 我没有正确调用我的脚本。 例如我的py脚本是ex15.py与 脚本,它将使用rw输入和argv 变量读取文本。这个文件名是 ex15_sample。我用python ex15.py ex15_sample调用脚本,我对我最后一次练习感到困惑。我在哪里使用了我在argv中设置的变量来调用脚本。但所有的反馈都是非常有帮助的,我也申请了 。

相关问题