Python 为什么这些文本文件以字符串形式打开?
我有两个.txt文件,作为命令行参数传递给程序。我想通读全文,没有第一行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
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元素列表,但您可能已经这样做了