argparse 读取 txt 文件

Posted

技术标签:

【中文标题】argparse 读取 txt 文件【英文标题】:argparse read in txt file 【发布时间】:2021-11-18 21:07:54 【问题描述】:

我正在尝试读取文本文件。在第二步中,我遍历文件,然后尝试在命令行中显示结果。

我有几个问题:

    我不确定我是否设法读取了文本文件,没有错误消息,但是 结果没有来 我收到一个错误“UnboundLocalError: local variable 'P' referenced before assignment - 虽然 我在函数之前定义了变量 该函数可以工作并打印所需的值,但在命令行中运行时却不能 使用 argparse

代码在命令行中作为“python filename.py textfile”运行

检查 agrparse 上的其他线程没有帮助。

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('filename')
args = parser.parse_args()

A = 0  # the number of characters are 0 in the beginning
B = 0
C = 0
D = 0

with open(args.filename) as file:

    def rooms():



        with open("rooms.txt", "r") as in_file:
            lines = in_file.readlines()

        for line in lines:
            if "A" in line:
                W+=line.count("A") #I use the count method to count each character in a specific row
            if "B" in line:
                B+=line.count("B")
            if "C" in line:
                C+=line.count("C")
            if "D" in line:
                D+=line.count("D")

    rooms()

# if __name__=='main__main':
    print(f'total:\nA: A B: B C: C D: D')  

任何帮助将不胜感激

【问题讨论】:

您没有使用传入的参数,因为您将 rooms.txt 硬编码为脚本中的文件 您能否详细说明目的并阐明您要做什么?您是否正在尝试读取文本文件并计算这些字母在文件中出现的次数? QueenSvetlana- 是的,我正在尝试读取文本文件。在第二步中,我遍历文件,然后尝试在命令行中显示结果 【参考方案1】:

如果是完整代码,代码有很多问题:

1)indentation : 代码中没有明确的缩进,所以没有按预期执行。

2)syntax: 完成你的函数代码后至少应该有2个空行,这样代码才能进入函数。

3) 分离出你的函数定义和函数调用。在打开的文件之外创建您的函数定义 (def rooms())。

【讨论】:

【参考方案2】:

您的代码存在一些问题,KiranM's answer 提到了其中一些问题。

其他问题是:

您有两个不同的文件来源,argsparse 和硬编码文件名。 您可以使用dictionaryif 语句完成您想要的。 您在这些行中阅读了两次,分别使用 for 循环和 in_file.readlines()
def room(filename::str): # or a Path object.
    letters = "A":0, "B":0, "C":0, "D":0
    with open(filename, "r") as in_file:
        for line in in_file:
            if line in letters:
                letters[line] = letters[line] + 1
    return letters

# In main:
print(room("room.txt"))

【讨论】:

以上是关于argparse 读取 txt 文件的主要内容,如果未能解决你的问题,请参考以下文章

argparse 读取 txt 文件

python argpare 模块的简单用法

Python 杂记:argparse 模块

如何测试我的代码是不是引发了适当的 argparse 异常?

如何使用 argparse 实现以下功能?

Python:argparse 读取 csv 文件功能