Python read()不读取fi

2024-04-20 05:48:09 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我用Python编写了一个简单的脚本,它将文件名作为命令行参数,并在执行脚本时读取给定的文件。很直接,每当我执行脚本时,它不会打印文件中的文本,也不会出现错误。我对编程相当陌生,在这段代码中我已经绞尽脑汁好几个小时了。你知道吗

import sys

def openfile(filename):
    f = open(filename, mode='r')
    f.read()
    f.close()

if __name__ == '__main__':
        openfile(filename = sys.argv[1])
        print('script has been executed')

快速免责声明我知道几年前有人发布了一个类似的问题,但他没有直接回答为什么他的代码不起作用,我也没有得到我正在寻找答案的信息。 也为我糟糕的英语感到抱歉。我尽了最大努力把它说清楚,但英语不是我的第一语言。你知道吗


Tags: 文件代码命令行文本import脚本参数文件名
3条回答

对于python新手来说,学习Python anti-patterns是必须的。这样可以避免许多错误和错误。OP显然没有其他编程语言的经验,但并不知道使用python的更好方法。你知道吗

如果您研究反模式,您将了解with open()是打开文件的更好方法。立即,您将f作为文件处理程序,它不会存储任何数据,除非您将数据从f.read()函数传递到另一个变量。你知道吗

def openfile(filename):
    with open(filename) as f:
        data = f.read()
    # to print out the contents
    print(data)

使用系统argv可以接受,但强烈建议使用argparse。你知道吗

似乎程序只是读取传递到命令行参数的文件。程序运行并读取文件,但是需要一行代码来告诉python打印正在读取的文件的内容。试试这个:

import sys

def openfile(filename):
    f = open(filename, mode='r')
    contents = f.read()
    print(contents)
    f.close()

if __name__ == '__main__':
    openfile(filename=sys.argv[1])
    print('script has been executed')

您正在读取文件f.read(),但需要将内容分配给变量或打印它或其他内容。Python不会仅仅因为你读了文件就打印你读的每个文件的内容:你必须告诉它如何处理结果。你知道吗

相关问题 更多 >