我有一个使用不同缩进格式化的文件,该文件长达数百行,我尝试了各种方法将其作为文件和变量加载到python中,但尚未成功。什么是加载文件的有效方法。我的最终目标是加载文件,并搜索特定的文本行。
with open('''C:\Users\Samuel\Desktop\raw.txt''') as f:
for line in f:
if line == 'media_url':
print line
else:
print "void"
Error: Traceback (most recent call last): File "<pyshell#35>", line 1, in <module> with open('''C:\Users\Samuel\Desktop\raw''') as f: IOError: [Errno 22] invalid mode ('r') or filename: 'C:\\Users\\Samuel\\Desktop\raw
答案 0 :(得分:2)
以下是将文件内容读入变量的标准方法:
with open("filename.txt", "r") as f:
contents = f.read()
如果您想要一个行列表而不是字符串中的整个文件,请使用以下命令:
with open("filename.txt", "r") as f:
contents = list(f.read())
然后,您可以使用
搜索文本if any("search string" in line for line in contents):
print 'line found'
答案 1 :(得分:2)
如果您正在尝试搜索特定的行,那么最好避免加载整个文件:
with open('filename.txt') as f:
for line in f:
if line == 'search string': # or perhaps: if 'search string' in line:
# do something
如果您在忽略缩进时尝试搜索特定行的存在,则需要使用
if line.strip() == 'search string'.strip():
在比较之前去除前导(和尾随)空格。
答案 2 :(得分:0)
Python使用反斜杠表示“转义”。对于Windows路径,这意味着将路径作为“原始字符串” - “r”前缀。
行附加换行符。要比较,剥去它们。
打开(r'C:\ Users \ Samuel \ Desktop \ raw.txt')为f: 对于f中的行: 如果line.rstrip()=='media_url': 印刷线 其他: print“void”