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
和硬编码文件名。
您可以使用dictionary
和if
语句完成您想要的。
您在这些行中阅读了两次,分别使用 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 文件的主要内容,如果未能解决你的问题,请参考以下文章