python - 构造路径上的“FileNotFoundError:[Errno 2] Windows 中没有此类文件或目录”
问题描述
我的文件路径是
C:/Users/Ratul/Downloads/Machine_Learning_Data/reddit_data/reddit_data/
该目录中有许多文件夹。我需要查看这些目录并打开以“RC_”开头的文件
这是我的代码:
import sqlite3
import json
import os
from datetime import datetime
timeframe = '2015-05'
sql_transaction = []
connection = sqlite3.connect('{}.db'.format(timeframe))
c = connection.cursor()
def create_table():
c.execute("CREATE TABLE IF NOT EXISTS parent_reply(parent_id TEXT PRIMARY KEY, comment_id TEXT UNIQUE, parent TEXT, comment TEXT, subreddit TEXT, unix INT, score INT)")
def format_data(data):
data = data.replace('\n',' newlinechar ').replace('\r',' newlinechar ').replace('"',"'")
return data
def find_parent(pid):
try:
sql = "SELECT comment FROM parent_reply WHERE comment_id = '{}' LIMIT 1".format(pid)
c.execute(sql)
result = c.fetchone()
if result != None:
return result[0]
else: return False
except Exception as e:
#print(str(e))
return False
if __name__ == '__main__':
create_table()
row_counter = 0
paired_rows = 0
with open('C:/Users/Ratul/Downloads/Machine_Learning_Data/reddit_data/reddit_data/{}/RC_{}'.format(timeframe.split('-')[0],timeframe), buffering=1000) as f:
for row in f:
row_counter += 1
row = json.loads(row)
parent_id = row['parent_id']
body = format_data(row['body'])
created_utc = row['created_utc']
score = row['score']
comment_id = row['name']
subreddit = row['subreddit']
parent_data = find_parent(parent_id)
# maybe check for a child, if child, is our new score superior? If so, replace. If not...
if score >= 2:
existing_comment_score = find_existing_score(parent_id)
但似乎路径中有一些错误。我收到一个错误
Traceback(最近一次调用最后):文件“C:/Users/Ratul/AppData/Local/Programs/Python/Python37/test02.py”,第 36 行,在 open('C:/Users/Ratul/Downloads/Machine_Learning_Data /reddit_data/reddit_data/{}/RC_{}'.format(timeframe.split('-')[0],timeframe), buffering=1000) as f: FileNotFoundError: [Errno 2] No such file or directory: ' C:/Users/Ratul/Downloads/Machine_Learning_Data/reddit_data/reddit_data/2015/RC_2015-05'
我不确定我在那里做错了什么。请帮忙。
解决方案
使用如何调试小程序(#1)和
print('C:/Users/Ratul/Downloads/Machine_Learning_Data/reddit_data/reddit_data/{}/RC_{}'.format(
timeframe.split('-')[0],timeframe))
而不是open
. 检查是否全部存在 - 因为对于您的某些值,它不存在。因此错误。
如果您的大多数文件都存在,则处理错误本身要容易得多:
myname = 'C:/Users/Ratul/Downloads/Machine_Learning_Data/reddit_data/reddit_data/{}/RC_{}'.format(timeframe.split('-')[0],timeframe)
try:
with open(myname, buffering=1000) as f:
for row in f:
row_counter += 1
row = json.loads(row)
parent_id = row['parent_id']
body = format_data(row['body'])
created_utc = row['created_utc']
score = row['score']
comment_id = row['name']
subreddit = row['subreddit']
parent_data = find_parent(parent_id)
# maybe check for a child, if child, is our new score superior? If so, replace. If not...
if score >= 2:
existing_comment_score = find_existing_score(parent_id)
except FileNotFoundError as fnfError:
print(myname)
print(fnfError)
该open()
命令不关心你使用\
或/
- 如果使用\
你应该转义它或使用原始字符串(又名:)r'C:\some\dir\file.txt'
- 你的语法是好的 - open() 将在 Windows 下使用适当的目录分隔符,即使你给它'c:/somedir/file.txt'
阅读:关于错误处理
推荐阅读
- ssl - 需要从在线提供商处创建公钥基础设施的指导
- ios - 由于未捕获的异常“NSInvalidArgumentException”,我的 Xcode 应用程序在尝试实现 NSFetchedResultsController 后崩溃
- sql - 有条件地应用唯一索引
- kotlin - 使用 UTF-16LE 编码创建文件
- vba - 仅将更改的文本复制到剪贴板
- vba - 如何引用回复的原始邮件?
- javascript - 如何在不从json循环的情况下获取给定特定键的所有值(例如:名称)?
- javascript - 如何修复 TypeError:无法读取未定义的属性“价格”
- scrapy - ItemLoader 不会将加载器上下文传递给输入处理器
- reactjs - 如何修复 React Native 中的 Firebase/firestore 错误?