使用预定义的函数(带有方法)打开文件

时间:2018-10-15 07:34:47

标签: python file-io

我有一个正在运行的预定义功能,用于检查输入的文件是否正确。我希望使用with“运算符在函数中打开此文件。这是我目前拥有的:

def open_file():
'''Checks if the file is correct.'''
grab_file = True #Creates initial variable that checks if file is correct
while grab_file == True: #Loop initiates the check if true
    txt = input("Enter a file name: ") #Asks for file input
    try: 
        f = open(txt) #Tries to open the file
        return f #File returned as output
        grab_file = False #Stops the loop
    except: #File is invalid, prompts for retry
        print("Error. Please try again.")

def main():
'''Main function that runs through file and does delta calculations.'''
with open(open_file()) as f:
  f.readline()
  print_headers()
  pass

不确定到底是什么问题,谢谢! 请注意,代码的第二部分位于其自己的主函数中,而不是open_file函数的一部分。

当我尝试运行以下代码时,代码给我一个错误:

  f.readline()
  date = f.readline()
  print_headers()
  

这是我遇到的错误,with open statement之后的代码只是一个简单的readline(

"TypeError: expected str, bytes or os.PathLike object, not _io.TextIOWrapper" 

1 个答案:

答案 0 :(得分:0)

您的错误很容易解决: 只需替换

with open(open_file()) as f:

使用

with open_file() as f:

因为您已经打开文件并在open_file()函数中返回了打开的文件。

但是在标准python 3.x中不存在print_headers()函数,因此我不确定这是您自己的函数还是其他错误。