我正在阅读《以困难的方式学习Python》, 在第 15 章我应该使用 import 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
值错误:太多值无法解压
最佳答案
只是一些提示...
from sys import argv
script, filename, = argv
在这里,您导入 argv 来访问命令行参数,然后期望它包含 2 个参数 - 脚本 (arg 0) 和要打印的文件名 (arg1)。尽管尾随逗号在语法上并非不正确,但它不是必需的,而且看起来有点奇怪。我通常将 argv
留在 sys
中,而不是将其拉入当前命名空间,但这是一个品味问题 - 它并没有真正的区别。我可能还会加入一些错误处理:
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
- 所以只需更改它就可以了。
或者,文件对象支持查找,因此您可以倒带
文件(当您读完文件后,没有什么可以再读的了),方法是:
txt.seek(0)
print txt.read()
关于python - 太多的值需要解压,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12757015/