我正在尝试打开一个txt文件并读取它,但是我遇到了类型错误,我不确定为什么。如果你能提供一个推理和正确的语法,我试图更好地掌握下面发生的事情。这是代码,我觉得很简单:
from sys import argv
script = argv
filename = argv
txt = open(filename)
print "Here's your file %r" %filename
print txt.read()
Muchas Gracias
答案 0 :(得分:4)
argv
是一个列表,而不是字符串。你想要
script = argv[0]
filename = argv[1]
考虑使用argparse
而不是直接处理sys.argv
:
>>> import argparse
>>> parser = argparse.ArgumentParser(description="Print a file.")
>>> parser.add_argument("path", type=str, nargs=1, help="Path to the file to be printed.")
_StoreAction(option_strings=[], dest='path', nargs=1, const=None, default=None, type=<type 'str'>, choices=None, help='Path to the file to be printed.', metavar=None)
>>> args = parser.parse_args()
>>> print args
Namespace(path=[<...>])
它看起来要复杂得多,但它会使您的命令行实用程序更灵活,更容易扩展,并且它将确保您在命令行上获得适当的文档。
答案 1 :(得分:2)
首先,argv是一个参数列表。 Open没有列表。这就是你遇到类型错误的原因。
第二,打开(应该)取2个参数,文件名和模式(是的模式是可选的,但养成把它放在那里的习惯。替换为
import sys
script = sys.argv[0]
filename = sys.argv[1]
txt = open(filename, 'r')
print "Here's your file %r" %filename
print txt.read()
答案 2 :(得分:0)
argv将是一个列表,而filename应该是一个字符串。
您应该使用filename = argv[1]