Python 为什么这些文本文件以字符串形式打开?

Python 为什么这些文本文件以字符串形式打开?,python,Python,我有两个.txt文件,作为命令行参数传递给程序。我想通读全文,没有第一行 patterns = ["".join(sys.argv[1].readlines()[1:])] text = "".join(sys.argv[2].readlines()[1:]) 这将返回以下错误: File "trie_builder.py", line 186, in main patterns = ["".join(sys.argv[1].readlines()[1:])] AttributeErr

我有两个.txt文件,作为命令行参数传递给程序。我想通读全文,没有第一行

patterns = ["".join(sys.argv[1].readlines()[1:])]
text = "".join(sys.argv[2].readlines()[1:])
这将返回以下错误:

File "trie_builder.py", line 186, in main
    patterns = ["".join(sys.argv[1].readlines()[1:])]
AttributeError: 'str' object has no attribute 'readlines'

如果我将文件'xx.txt'传递给sys.arg[1],它怎么可能是字符串?

您将文件名指定为命令的参数,但没有打开它们

使用内置的:

以及:

或者更好:

with f as open(sys.argv[1]):
    # f.readlines()...
当前,您将文件名视为文件,而不是


尽量避免使用大的一行程序,它们很难维护和修改…:-)

您将文件名指定为命令的参数,但没有打开它们

使用内置的:

以及:

或者更好:

with f as open(sys.argv[1]):
    # f.readlines()...
当前,您将文件名视为文件,而不是


尽量避免使用大的一行程序,它们很难维护和修改…:-)

要用python打开文件,需要使用函数。当前,您正试图在字符串对象上使用
readlines
,这就是
argv
变量

您的代码应该执行以下类似操作:

def readlines( f ):
    lines = [ line for line in open( f ) ]
    return lines

patterns = "".join( readlines( sys.argv[1] )[1:] )
text = "".join( readlines( sys.argv[2] )[1:] )

我从模式行中去掉了
[]
括号,因为我认为您不想将
模式
文件作为包含文件内容的1元素列表,但您可能已经这样做了。

要在python中打开文件,您需要使用该函数。当前,您正试图在字符串对象上使用
readlines
,这就是
argv
变量

您的代码应该执行以下类似操作:

def readlines( f ):
    lines = [ line for line in open( f ) ]
    return lines

patterns = "".join( readlines( sys.argv[1] )[1:] )
text = "".join( readlines( sys.argv[2] )[1:] )
我从模式行中去掉了
[]
括号,因为我不认为您打算将
模式
文件作为包含文件内容的1元素列表,但您可能已经这样做了