:コードは、私は、関数の外でコードを使用する場合、それは正常に動作し、ファイル内の行数を印刷しようとしている外部の機能を動作しますが、内部ではない機能(パイソン)
input_file_name = input("Please Enter the name of your text file: ")
infile = open(input_file_name, "r")
listOfLines = infile.readlines()
count = 0
char = " "
for line in listOfLines :
text = line.rstrip()
while char != "":
char = infile.read(1)
count = count + 1
print(count)
infile.close()
私は関数の中で同じコードを使用すると、5(私のテストファイルの長さ)の代わりに0の値を出力します。私は機能
def print_file(infile):
listOfLines = infile.readlines()
for line in listOfLines:
text = line.rstrip()
print(text)
や関数の呼び出し、
print_file(infile)
を削除する場合
def main():
input_file_name = input("Please Enter the name of your text file: ")
infile = open(input_file_name, "r")
print()
print_file(infile)
count_lines(infile)
infile.close()
def print_file(infile):
listOfLines = infile.readlines()
for line in listOfLines:
text = line.rstrip()
print(text)
def count_lines(infile):
listOfLines = infile.readlines()
count = 0
char = " "
for line in listOfLines :
text = line.rstrip()
while char != "":
char = infile.read(1)
count = count + 1
print(count)
main()
しかし、それが正常に動作します。最初の機能が2番目の機能の印刷方法に影響するのはなぜですか?
'print_file'がファイルを消費し、ストリームを最初に戻さないためです。 – MFisherKDX
最初の関数はファイルをEOFに残すためです。だから次の関数は何も読んでいない。 count_lines()メソッドの先頭に 'infile.seek(0)'を追加して、ファイルをその開始位置にリセットしてみてください。 –
[開いているファイルに対してread()を2回呼び出すことができないのはなぜですか?](https://stackoverflow.com/questions/3906137/why-cant-i-call-read-twice-on-an-オープンファイル) – MFisherKDX