Python error: FileNotFoundError: [Errno 2] No such file or directory

前端 未结 2 1070
不思量自难忘°
不思量自难忘° 2021-02-06 13:34

I am trying to open the file from folder and read it but it\'s not locating it. I am using Python3

Here is my code:

import os
import glob

prefix_path          


        
2条回答
  •  被撕碎了的回忆
    2021-02-06 14:16

    You are not giving the full path to a file to the open(), just its name - a relative path.

    Non-absolute paths specify locations in relation to current working directory (CWD, see os.getcwd).

    You would have to either os.path.join() correct directory path to it, or os.chdir() to the directory that the files reside in.

    Also, remember that os.path.abspath() can't deduce the full path to a file just by it's name. It will only prefix its input with the path of the current working directory, if the given path is relative.

    Looks like that you are forgetting to modify the the file_array list. To fix this, change the first loop to this:

    file_array = [os.path.join(prefix_path, name) for name in file_array]
    

    Let me reiterate.

    This line in your code:

    file_array = [os.path.abspath(f) for f in os.listdir(prefix_path) if f.endswith('.txt')]
    

    is wrong. It will not give you a list with correct absolute paths. What you should've done is:

    import os
    import glob
    
    prefix_path = ("C:/Users/mpotd/Documents/GitHub/Python-Sample-"    
                   "codes/Mayur_Python_code/Question/wx_data/")
    target_path = open('MissingPrcpData.txt', 'w')
    file_array = [f for f in os.listdir(prefix_path) if f.endswith('.txt')]
    file_array.sort() # file is sorted list
    
    file_array = [os.path.join(prefix_path, name) for name in file_array]
    
    for filename in file_array:
         log = open(filename, 'r')
    

提交回复
热议问题