python通过命令行参数上传文件,实现json和csv转换
时间: 2023-08-12 09:16:32 浏览: 170
利用python将json数据转换为csv格式的方法
4星 · 用户满意度95%
你可以使用Python内置的argparse模块来解析命令行参数,使用标准库中的csv和json模块来处理CSV和JSON文件的转换。以下是一个示例代码:
```python
import argparse
import csv
import json
# 创建命令行参数解析器
parser = argparse.ArgumentParser(description='Convert CSV to JSON or JSON to CSV')
parser.add_argument('file', help='CSV or JSON file to convert')
parser.add_argument('output', help='Output file name')
parser.add_argument('--csv-to-json', action='store_true', help='Convert CSV to JSON')
parser.add_argument('--json-to-csv', action='store_true', help='Convert JSON to CSV')
# 解析命令行参数
args = parser.parse_args()
# 判断转换类型
if args.csv_to_json:
# 读取CSV文件
with open(args.file, 'r') as csv_file:
# 读取CSV文件内容,并转换为字典列表
csv_data = [dict(row) for row in csv.DictReader(csv_file)]
# 将字典列表转换为JSON格式
json_data = json.dumps(csv_data, indent=4)
# 将JSON数据写入到输出文件
with open(args.output, 'w') as json_file:
json_file.write(json_data)
elif args.json_to_csv:
# 读取JSON文件
with open(args.file, 'r') as json_file:
# 读取JSON文件内容
json_data = json.load(json_file)
# 获取CSV列名
headers = list(json_data[0].keys())
# 创建CSV写入器
csv_writer = csv.DictWriter(open(args.output, 'w'), fieldnames=headers)
# 写入CSV列名
csv_writer.writeheader()
# 写入CSV数据
for row in json_data:
csv_writer.writerow(row)
else:
print('Please specify a conversion type: --csv-to-json or --json-to-csv')
```
可以通过以下命令行参数运行代码:
```bash
python convert.py input.csv output.json --csv-to-json
python convert.py input.json output.csv --json-to-csv
```
其中,`input.csv`和`input.json`是要转换的文件名,`output.json`和`output.csv`是输出文件名,`--csv-to-json`和`--json-to-csv`是转换类型参数。
阅读全文