Python转换JsonL为CSV文件时报PermissionError 13权限错误如何解决
报错触发原因
你遇到的PermissionError最核心的触发原因是代码中open()函数传入的路径是文件夹路径C:\Users\Natthanon\Documents\Coding 101\Python\CSV,而非具体的CSV文件路径。系统无法直接将内容写入文件夹,因此抛出了权限类报错,并非你的账号真的没有该目录的访问权限。
少数情况下如果路径正确仍报该错误,才是真的权限问题:比如目标文件夹被设为只读、Visual Studio Code没有对应目录的读写权限。
可行解决方案
按优先级排序的处理方案如下:
- 第一步修正写入路径:将open函数的第一个参数改为具体的CSV文件路径,比如你要输出到
output.csv,就修改为r'C:\Users\Natthanon\Documents\Coding 101\Python\CSV\output.csv'。修改前先确认C:\Users\Natthanon\Documents\Coding 101\Python\CSV文件夹已经存在,不存在可以手动新建,也可以在代码开头加逻辑自动创建。 - 第二步优化代码逻辑:你当前的代码每读取一行JSONL内容就打开/关闭一次CSV文件,性能极低,建议将CSV文件的打开逻辑移到循环外层,避免重复IO操作,同时也修正了原代码中循环变量和文件对象重名的问题。
- 第三步权限兼容处理:如果修正路径后仍报权限错误,可以右键点击Visual Studio Code图标,选择「以管理员身份运行」后再执行脚本;也可以将CSV输出路径修改为桌面等无特殊权限限制的目录。
修正后参考代码
import glob import json import csv import os import time start = time.time() from flatten_json import flatten # 配置路径 File_path = r'C:\Users\Natthanon\Documents\Coding 101\Python\JSONL' # 自动确保CSV输出文件夹存在 csv_folder = r'C:\Users\Natthanon\Documents\Coding 101\Python\CSV' os.makedirs(csv_folder, exist_ok=True) csv_output_path = os.path.join(csv_folder, 'output.csv') # 读取所有jsonl文件 files = [f for f in glob.glob(os.path.join(File_path, "**/*.jsonl"), recursive=True)] # 全局只打开一次CSV文件,提升性能 with open(csv_output_path, 'a' , newline='', encoding='utf-8') as f: thewriter = csv.writer(f) # 如果需要写入表头可取消下一行注释 # thewriter.writerow(['header1', 'header2']) for f_jsonl in files: with open(f_jsonl, 'r', encoding='utf-8') as F: for line in F: data = json.loads(line) data_1 = flatten(data) thewriter.writerow([data_1['header1'],data_1['header2']])
内容的提问来源于stack exchange,提问作者honnielemons
相关产品推荐
相关产品推荐

