无法正确读取文件中的行
Unable to properly read the lines from a file
我有文件,是我用 python script
写的。该文件很大,包含超过 1000 行,每一行都非常大,就像 :(shortened)
1 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
2 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
3 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
...
你看,在显示器上显示时,每行可以占3行的space。
当我尝试时:
fp = open('data.txt','r')
c = 0
for line in fp:
c += 1
print("No. of line = ",c)
我得到了正确的值,当我使用 read()
函数时,我得到了一个不同的值,如:
fp = open('data.txt','r')
c = 0
data = fp.read()
for line in data:
c += 1
print("No. of line = ",c)
谁能解释一下,使用 read()
函数和不使用它有什么区别?
提前致谢...
使用
data = fp.read()
for line in data:
c += 1
您在一个字符串中读取所有内容,并且 for
-loop 将此字符串视为字符列表 - 因此您计算字符数。
您必须使用 readlines()
获取行列表并计算此列表中的行数
data = fp.readlines()
for line in data:
c += 1
顺便说一句:计算字符的结果相同
data = fp.read()
c = len(data)
并计算行数
data = fp.readlines()
c = len(data)
顺便说一句:您还可以使用 print()
查看变量
中的内容
data = fp.read()
print(data[0])
print(data[:3])
print(data)
和
data = fp.readlines()
print(data[0])
print(data[:3])
print(data)
如果你想在一个脚本中测试,那么你必须再次关闭并打开失败,或者使用 fp.seek(0)
移动到文件开头,然后再阅读。
要使用线条,您应该使用
fp = open('data.txt','r')
for line in fp:
# ...code ...
fp.close()
或
fp = open('data.txt','r')
all_lines = fp.readlines()
for line in all_lines:
# ...code ...
fp.close()
同with ... as ...
with open('data.txt','r') as fp:
for line in fp:
# ...code ...
或
with open('data.txt','r') as fp:
all_lines = fp.readlines()
for line in all_lines:
# ...code ...
我有文件,是我用 python script
写的。该文件很大,包含超过 1000 行,每一行都非常大,就像 :(shortened)
1 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
2 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
3 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
...
你看,在显示器上显示时,每行可以占3行的space。
当我尝试时:
fp = open('data.txt','r')
c = 0
for line in fp:
c += 1
print("No. of line = ",c)
我得到了正确的值,当我使用 read()
函数时,我得到了一个不同的值,如:
fp = open('data.txt','r')
c = 0
data = fp.read()
for line in data:
c += 1
print("No. of line = ",c)
谁能解释一下,使用 read()
函数和不使用它有什么区别?
提前致谢...
使用
data = fp.read()
for line in data:
c += 1
您在一个字符串中读取所有内容,并且 for
-loop 将此字符串视为字符列表 - 因此您计算字符数。
您必须使用 readlines()
获取行列表并计算此列表中的行数
data = fp.readlines()
for line in data:
c += 1
顺便说一句:计算字符的结果相同
data = fp.read()
c = len(data)
并计算行数
data = fp.readlines()
c = len(data)
顺便说一句:您还可以使用 print()
查看变量
data = fp.read()
print(data[0])
print(data[:3])
print(data)
和
data = fp.readlines()
print(data[0])
print(data[:3])
print(data)
如果你想在一个脚本中测试,那么你必须再次关闭并打开失败,或者使用 fp.seek(0)
移动到文件开头,然后再阅读。
要使用线条,您应该使用
fp = open('data.txt','r')
for line in fp:
# ...code ...
fp.close()
或
fp = open('data.txt','r')
all_lines = fp.readlines()
for line in all_lines:
# ...code ...
fp.close()
同with ... as ...
with open('data.txt','r') as fp:
for line in fp:
# ...code ...
或
with open('data.txt','r') as fp:
all_lines = fp.readlines()
for line in all_lines:
# ...code ...