我目前正在尝试用Python编写一个可以操作JSON" .txt"文件夹中的文件并将其另存为新的JSON" .txt"同一文件夹中的文件。我已经知道如何操作文件,但是我需要手动输入实际路径。有没有办法只输入文件夹名称和文本文件的名称来操纵它而不是键入完整的路径?
因为现在,我正在做这件事
import json
simple_path = input('Please input the path directory: ")
>>> 'c:\user\path1\path2\simple.txt'
with open (simple_path,'r+') as f:
simple_data = json.load(f)
somefunction()
f.seek(0)
out_file = open('c://user//path1//path2//simple_edit.txt','w')
json.dump(simple_data, out_file)
每次我想操作特定的JSON文本文件时,我都必须改变整个路径,并且我必须编辑" out_file"每次都手动,所以我可以让它更灵活吗?
因为我将脚本放入包含所有子文件夹和JSON文件的主文件夹中。我可以更轻松地操作子文件夹JSON文本文件而无需放置完整路径。
答案 0 :(得分:1)
是的,您可以使用os模块
轻松完成import os
folder = input('please enter the folder:')
file = input('enter the filename:')
print('C'+os.path.join(os.sep, folder, file))
os.path.join
通过连接您提供给它的字符串并在* nix系统中添加正确的文件分隔符(/
和在Windows上添加\
)来构建文件的路径
而os.sep
返回根目录的字符串,该目录在* nix系统中为/
,在Windows中为\
答案 1 :(得分:0)
对于输入,相对路径可能就足够了。对于输出,只需通过添加' _edit'从输入文件名生成文件名。使用os.path.splitext()
。
import json
import os
def edit_json(filename):
with open(filename, 'r+') as f:
simple_data = json.load(f)
somefunction()
f.seek(0)
base, ext = os.path.splitext(filename)
out_file = open(base + '_edit' + ext, 'w')
json.dump(simple_data, out_file)
simple_path = input('Please input the path directory: ")
>>> 'path2\simple.txt'
edit_json(simple_path)