我在python上遇到文件处理程序问题,而在在线ide上它运行良好

时间:2018-12-29 17:25:55

标签: python python-3.x

在脱机python环境(3.7.1)上,同一文件处理程序无法在同一脚本中处理文件,而在联机ide上可以正常工作。

我正在从Chuck Severance课程(py4e)学习python,并在进行作业时注意到这一点,这需要我从文件中读取并在大写每个字母后打印其内容。现在,我可以使用两种方法,一种是使用for循环,另一种是read()函数。在分别运行每个脚本之后,我想到了在相同的脚本中运行两个脚本,但是仅完成一项工作。当我创建一个新的文件处理程序并使用指向同一个文件的单个文件处理程序在相同的脚本中运行这两个文件时,它起作用了。现在,奇怪的是,在在线ide中,两者都使用了相同的文件处理程序。所以,我的怀疑是那为什么两者都不同,因为python是相同的,即python3。为什么在我的系统上,我无法使用相同的文件处理程序,而在在线ide上却能正常工作。

fname=input("Enter file name : ")
fh=open(fname)
for line in fh:
    print(line.rstrip().upper())

print("****Using read()****")
fdata=fh.read()
print(fdata.rstrip().upper())

预期:“ ****使用read()****”后输出相同 当前:“ ****使用read()****”之后什么都没有

1 个答案:

答案 0 :(得分:0)

您在第一次读取文件后忘记重新读取文件。

第一次循环后,光标移至文件末尾(EOF),并且由于您没有再次打开文件,它不会读取任何内容,因为光标位于EOF。

最佳做法是在读取文件后将其关闭,然后再次打开。 正确的代码是

fname=input("Enter file name : ")
fh=open(fname)
for line in fh:
    print(line.rstrip().upper())
fh.close()

print("****Using read()****")
fh=open(fname)
fdata=fh.read()
print(fdata.rstrip().upper())
fh.close()