Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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 3.6/Tkinter:找不到文件->;FileNotFoundError:[Errno 2]没有这样的文件或目录:';XXXX和x27;_Python_Python 3.x_Matplotlib_Tkinter - Fatal编程技术网

Python 3.6/Tkinter:找不到文件->;FileNotFoundError:[Errno 2]没有这样的文件或目录:';XXXX和x27;

Python 3.6/Tkinter:找不到文件->;FileNotFoundError:[Errno 2]没有这样的文件或目录:';XXXX和x27;,python,python-3.x,matplotlib,tkinter,Python,Python 3.x,Matplotlib,Tkinter,我正试图根据SeaofBTCapp(Sentdex)的思想构建一个应用程序,Python/Tkinter没有找到我的“sampleData.csv”文件,尽管我确信我有正确的目录。(我尝试了.csv和.txt扩展,但都没有用。)我希望这个MWE不是太小,显然我导入了tkinter和其他matplotlib模块,据我所知,open()函数是python的本机函数 功能: import matplotlib.animation as animation def animate(i): pu

我正试图根据SeaofBTCapp(Sentdex)的思想构建一个应用程序,Python/Tkinter没有找到我的“sampleData.csv”文件,尽管我确信我有正确的目录。(我尝试了.csv和.txt扩展,但都没有用。)我希望这个MWE不是太小,显然我导入了tkinter和其他matplotlib模块,据我所知,open()函数是python的本机函数

功能:

import matplotlib.animation as animation

def animate(i):
    pullData = open('sampleData.csv', "r").read()
    dataList = pullData.split('\n')
    xList =[]
    yList = []
    for eachLine in dataList:
        if len(eachLine)>1:
            x, y = eachLine.split(',')
            xList.append(int(x))
            yList.append(int(y))
    a.clear()
    a.plot(xList, yList )
File "/Users/nrsmoll/PycharmProjects/SeaofStats/main.py", line 27, in animate
    pullData = open('sampleData.csv', "r").read()
FileNotFoundError: [Errno 2] No such file or directory: 'sampleData.csv'
print(os.getcwd())
/Users/nrsmoll/PycharmProjects/SeaofStats
print(os.listdir())
['.DS_Store', 'main.py', 'sampleData.csv', '.idea']
print(os.listdir())
['.DS_Store', 'sampleData.csv', 'main.py', '.idea']
print(os.path.exists(r"sampleData.csv")) 
True
回溯:

import matplotlib.animation as animation

def animate(i):
    pullData = open('sampleData.csv', "r").read()
    dataList = pullData.split('\n')
    xList =[]
    yList = []
    for eachLine in dataList:
        if len(eachLine)>1:
            x, y = eachLine.split(',')
            xList.append(int(x))
            yList.append(int(y))
    a.clear()
    a.plot(xList, yList )
File "/Users/nrsmoll/PycharmProjects/SeaofStats/main.py", line 27, in animate
    pullData = open('sampleData.csv', "r").read()
FileNotFoundError: [Errno 2] No such file or directory: 'sampleData.csv'
print(os.getcwd())
/Users/nrsmoll/PycharmProjects/SeaofStats
print(os.listdir())
['.DS_Store', 'main.py', 'sampleData.csv', '.idea']
print(os.listdir())
['.DS_Store', 'sampleData.csv', 'main.py', '.idea']
print(os.path.exists(r"sampleData.csv")) 
True
文件系统检查:

import matplotlib.animation as animation

def animate(i):
    pullData = open('sampleData.csv', "r").read()
    dataList = pullData.split('\n')
    xList =[]
    yList = []
    for eachLine in dataList:
        if len(eachLine)>1:
            x, y = eachLine.split(',')
            xList.append(int(x))
            yList.append(int(y))
    a.clear()
    a.plot(xList, yList )
File "/Users/nrsmoll/PycharmProjects/SeaofStats/main.py", line 27, in animate
    pullData = open('sampleData.csv', "r").read()
FileNotFoundError: [Errno 2] No such file or directory: 'sampleData.csv'
print(os.getcwd())
/Users/nrsmoll/PycharmProjects/SeaofStats
print(os.listdir())
['.DS_Store', 'main.py', 'sampleData.csv', '.idea']
print(os.listdir())
['.DS_Store', 'sampleData.csv', 'main.py', '.idea']
print(os.path.exists(r"sampleData.csv")) 
True

啊,答案是简单地把整个或绝对路径:

pullData = open('/Users/nrsmoll/PycharmProjects/SeaofStats/sampleData.csv', "r").read()

这么简单。但是,如果有人知道如何进行调试,这样我就不必在其中放置绝对路径,那就太好了,我想在创建独立项目时可能需要这样做。

谢谢,这是最后一分钟尝试的调试。为了进行调试,您能在打开文件之前将os.getcwd()和os.listdir()放在代码中吗?然后,您可以将os.path.join与os.getcwd和filename一起使用。Tkinter内置了一个文件选择器。显示文件选择器,等待用户选择文件,然后获取所选文件的绝对路径。看看这个问题:你不应该把绝对路径。最有可能的是,当前工作目录已更改,或者不是您假定的那样。如果您认为cwd在您认为的位置,那么相对路径应该是有效的。