打开file.txt并使用argparse将其存储到变量中

2024-10-03 04:30:39 发布

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

如何打开file.txt并将值存储到名为inputfileone和inputfiletwo的两个变量中,但错误一直让我困惑…即使文件位置是真的…当我运行命令时

python task.py -f fileone.txt -t filetwo.txt

错误=打开(inputfileone,'r')作为fileone: FileNotFoundError:[Errno 2]没有这样的文件或目录:“”

下面是我的代码

import argparse

#read file from var inputfileone argparse
with open(inputfileone, 'r') as fileone:
      for line in fileone: 
          .....

#read file from var inputfiletwo argparse   
with open(inputfiletwo, 'r') as filetwo:
      for line in filetwo: 


parser = argparse.ArgumentParser()
parser.add_argument("-f","-inputfile1", type=argparse.FileType('r'), help = "file one")
parser.add_argument("-t","-inputfile2", type=argparse.FileType('r'), help = "file two")
args = parser.parse_args()

inputfileone = args.inputfile1 #store value to 'with open(inputfileone, 'r') as fileone:'
inputfiletwo = args.inputfile2 

Tags: 文件txtparserreadas错误withargparse
1条回答
网友
1楼 · 发布于 2024-10-03 04:30:39

FileType为您打开文件;不要再试一次:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("-f","-inputfile1", type=argparse.FileType('r'), help = "file one")
parser.add_argument("-t","-inputfile2", type=argparse.FileType('r'), help = "file two")
args = parser.parse_args()

inputfileone = args.inputfile1   # file is already open
inputfiletwo = args.inputfile2 

#read file from var inputfileone
for line in fileone: 
          .....

备选方案:

parser = argparse.ArgumentParser()
parser.add_argument("-f","-inputfile1", help = "file one")
parser.add_argument("-t","-inputfile2", help = "file two")
args = parser.parse_args()

inputfileone = args.inputfile1   # plain filename
inputfiletwo = args.inputfile2 

#read file from var inputfileone
with open(inputfileone, 'r') as fileone:
     for line in fileone: 
         .....

在这两种情况下,请等到parse_args之后再使用inputfileone变量

====

更好的脚本组织:

import argparse

def read_file1(filename):
    with  open(filename) as f:
        ...
def create_parser():
     parser = argparse.ArgumentParser()
     parser.add_argument("-f"," inputfile1")
     ...
     return parser           

if __name__ == '__main__':
     parser = create_parser()
     args = parser.parse_args()
     filename1 = args.inputfile1
     read_file1(filename1)
     ....

相关问题 更多 >