Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用函数通过键入文件名打开文本文件_Python_Python 2.7 - Fatal编程技术网

Python 使用函数通过键入文件名打开文本文件

Python 使用函数通过键入文件名打开文本文件,python,python-2.7,Python,Python 2.7,我正在尝试编写一个Python2.7函数,该函数允许我将文本文件的名称键入预先制作的GUI中,该GUI将打开文本文件,然后将文件名作为其他函数(即计数字符)读取该文件的基础。我在得到GUI之前编写了这个函数,现在我遇到了全局变量的问题 def OpenFile(filename): try: rfile = open(filename, "r") #please type the file as a string except IOError: p

我正在尝试编写一个Python2.7函数,该函数允许我将文本文件的名称键入预先制作的GUI中,该GUI将打开文本文件,然后将文件名作为其他函数(即计数字符)读取该文件的基础。我在得到GUI之前编写了这个函数,现在我遇到了全局变量的问题

def OpenFile(filename):
    try:
        rfile = open(filename, "r") #please type the file as a string
    except IOError:
        print ("File Not Found") 
    else:
        print ("File Opened")

这就是我写的,我不确定从那里去哪里,因为函数应该打开文件并相应地打印任何消息。我一直在努力寻找解决办法,但我真的很挣扎

该函数接受文件路径输入并返回文件中的行,然后打印
“文件成功”
。函数返回
f.readlines
,这基本上是文件中所有行的列表

def get(filename):
        try:
            with open(filename, "r") as f:
                print('File Success')
                return f.readlines()
        except IOError:
            print ("File Not Found") 

fname = input("Please insert file path")

contents = get(fname)

我还编辑了代码,使
input()
位于外部,从而提高了可测试性。

您的缩进不正确。什么是全局变量?问题是什么?我试图声明全局变量,但它不起作用,因为我得到的错误是,文件名是本地和全局的。此外,我还修复了缩进,感谢您指出这非常有效,但我要提醒您,
get
函数做的事情太多了
def-get(fname):尝试:将open(fname)作为f:…
fname=input(“”);contents=get(fname)
更干净(而且更易于测试!)谢谢。我对Python真的很陌生。为了确保我与您在同一页面上,我尝试运行代码,但当我尝试在input()中键入文件名时,代码无效。输入文件名的框已经给了我,所以我只需要编写一个函数,允许我读取文件名,然后打开它。我真的很努力,在过去的3个小时里我一直在谷歌上搜索,没有找到解决方案。在这种情况下,你不需要使用输入。您可以删除该行并将fname替换为给定变量的名称。我还根据@AdamSmith的评论编辑了我的答案,以使其更易于测试=)非常感谢您的帮助。我想我没有清楚地解释我最初的问题。这仍然不是我要找的。我仍然需要将代码与提供给我的GUI集成,这非常具有挑战性-也不知道如何集成…我很抱歉,但我真的非常感谢您的帮助!为什么不发布代码片段?我们是来帮忙的,但你需要尽可能清楚。提供的答案只能是您要求的答案,在本例中,返回带有输入文件名的文件。