Python运行报FileNotFoundError 无法读取同目录下proxylist.csv文件
问题原因
- Python读取相对路径文件时,默认以终端当前的工作目录为基准查找,不是以脚本文件本身的存储目录为基准。从你的报错日志能看到,你执行脚本时终端的工作路径是
C:\Users\andre,而proxylist.csv存放在C:\Users\andre\Desktop\Python dsicord bot目录下,自然找不到文件。 - 也有可能是文件名拼写错误,比如后缀名实际是
.txt被系统隐藏了,或者大小写拼写和实际文件不符。
解决方法
方案1:切换终端工作目录后运行(最简便)
在VS Code终端中先切换到脚本所在目录,再执行脚本:
cd "C:\Users\andre\Desktop\Python dsicord bot" python link_Beta.py
也可以直接在VS Code的资源管理器里右键对应文件夹,选择「在集成终端中打开」,再运行脚本就不会有路径问题。
方案2:代码中动态拼接绝对路径(推荐,不受运行位置影响)
修改读取文件的代码,先获取当前脚本的所在目录,再拼接csv文件名,完全避免工作目录的影响:
import os import requests import random import csv import concurrent.futures # 新增这两行获取脚本所在目录的绝对路径 current_dir = os.path.dirname(os.path.abspath(__file__)) csv_path = os.path.join(current_dir, 'proxylist.csv') proxylist = [] # 改成用拼接好的绝对路径打开文件 with open(csv_path, 'r') as f: reader = csv.reader(f) for row in reader: proxylist.append(row[0]) def extract(proxy): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:80.0) Gecko/20100101 Firefox/80.0'} try: r = requests.get('https://httpbin.org/ip', headers=headers, proxies={'http': proxy, 'https': proxy}, timeout=2) print(r.json(), ' | Works') except: pass return proxy with concurrent.futures.ThreadPoolExecutor() as executor: executor.map(extract, proxylist)
方案3:检查文件名正确性
确认文件夹里的文件确实是proxylist.csv,没有多空格、拼写错误,也没有被系统隐藏文件后缀导致实际文件名是proxylist.csv.txt的情况。
内容的提问来源于stack exchange,提问作者ykyk
相关产品推荐
相关产品推荐

