Too many values to unpack

。_饼干妹妹 提交于 2019-12-01 01:35:44

Just a couple of pointers...

from sys import argv  

script, filename, = argv 

Here you're importing argv to access command line parameters, and then expecting it to contain 2 arguments - script (arg 0) and filename to print (arg1). Although the trailing comma isn't syntatically incorrect, it's not required and just looks a bit odd. I nomally leave argv inside sys instead of pulling it into the current namespace, but that's a matter of taste - it doesn't make a real difference. I would probably throw in a bit of error handling as well:

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() 

All that txt = (name) is doing here is making txt have the value of filename. I believe you want to be making txt a file object, so that you can .read() from it:

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 ()

You've got the open() here, but txt.again.read() should be txt_again.read() else you'll get an AttributeError - so just change that and it's fine.

Alternatively, file objects supporting seeking, so you could just rewind the file (as you've read the file to the end, there's nothing left to read anymore), by using:

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

How are you running the script?

When you say,

script, filename = argv

you are expecting two items in argv. The first one is the script name and the second one is a filename. If you try to run the script with more than 2 arguments then you will get such an error

python myscript.py myfile.py somethingelse

If you want to pass one more parameter to the script, then you need to specify a third variable to unpack the value into. something like this

script, filename, option = argv

Also, it would help if you paste the complete traceback

O.K. so I found my problem I was not calling my script correctly. For example my py script is ex15.py with that script it will read a text using rw input and argv variables. And the filename for that is ex15_sample. I call the script with python ex15.py ex15_sample, I was confused with my last exercise. Where I used the variables I set in argv to call the script. But all of the feed back was very help and I also applied.

There is an extra comma

script, filename, = argv

It should be

script, filename = argv
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!