Python类型错误(可能很简单)

时间:2010-12-15 21:14:29

标签: python

我正在尝试打开一个txt文件并读取它,但是我遇到了类型错误,我不确定为什么。如果你能提供一个推理和正确的语法,我试图更好地掌握下面发生的事情。这是代码,我觉得很简单:

from sys import argv

script = argv
filename = argv

txt = open(filename)

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

Muchas Gracias

3 个答案:

答案 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]