我试图创建一个程序,读取用户给出的路径,然后读取该特定路径中存在的前两行txt文件。Python - 从txt文件读取前两行
问题是,我给出的这个错误:
“类型错误:强迫为Unicode:需要字符串或缓冲区,builtin_function_or_metho d个”
我不明白为什么?
我试图创建一个程序,读取用户给出的路径,然后读取该特定路径中存在的前两行txt文件。Python - 从txt文件读取前两行
问题是,我给出的这个错误:
“类型错误:强迫为Unicode:需要字符串或缓冲区,builtin_function_or_metho d个”
我不明白为什么?
您似乎认为内置的dir
意味着目录名;不,这不对。
你应该传递一个目录路径os.chdir
而不是dir
:BTW
os.chdir('/some/directory/path')
,你不需要将整个文件读入内存,让您的两条线,你可以简单地调用next
上文件对象:
with open(file) as f:
line1, line2 = next(f), next(f)
好的,谢谢。是作为参数发送的,它不是硬编码的。 我在Linux上的命令行上运行python。 – LinuxN00b
作为参数通过命令行?os.chd IR(sys.argv中[1])' –
而且,如果没有路径输入,你应该打印错误消息后退出,否则你将得到一个IndexError的
os.chdir(sys.argv[1])
如果该文件只有一行,第二next(f)
会给StopIteration异常,这应该是逮住,或者您可以使用next(f, "")
第二线,这将默认为空字符串,以防到达文件末尾。
编辑:我进入了错误的路径。 :(
好了,所以我现在编辑的代码和我没有得到任何错误。现在的问题是,如果我有什么python readfiles.py /home/
运行情况?
#!/usr/bin/python
import glob, os
import sys
#Check to see that path was privided
if len(sys.argv) < 2:
print "Please provide a path"
sys.exit()
#Find files in path given
os.chdir(sys.argv[1])
#Chose the ones with txt extension
for file in glob.glob("*.txt"):
try:
#Read and output first two lines of txt file
with open(file) as f:
line1, line2 = next(f), next(f, "")
print line1 + " " + line2
#Catch exception errors
except IOError:
print "Failed to read " + file
对于初学者来说,要打印线2和3 。请给出完整的错误信息,包括回溯。 – timgeb
'os.chdir(dir)'你认为'dir'代表这行吗? – DeepSpace
似乎是'f.close',否? – itzMEonTV