Python 读取多个同名但扩展名不同的文件

Python 读取多个同名但扩展名不同的文件,python,json,nifti,Python,Json,Nifti,我试图从同名但扩展名不同的文件夹中读写文件=>从中提取数据=>重写。这是我的密码: for header_name in glob.glob(os.path.join(folder_path, "*.json")): for nii_name in glob.glob(os.path.join(folder_path, "*.nii")): with open(header_name, "r") as f: nii_meta = json.load(f)

我试图从同名但扩展名不同的文件夹中读写文件=>从中提取数据=>重写。这是我的密码:

for header_name in glob.glob(os.path.join(folder_path, "*.json")):
    for nii_name in glob.glob(os.path.join(folder_path, "*.nii")):
        with open(header_name, "r") as f:
        nii_meta = json.load(f)
        add_stc = slicetime(header_name).tolist()
        nii_meta["SliceTiming"] = add_stc
    with open(header_name, 'w') as f:
        json.dump(nii_meta, f, indent=2)
我试着做检查:

    h_name = os.path.splitext(os.path.basename(header_name))[0]
    n_name = os.path.splitext(os.path.basename(nii_name))[0]
    if h_name == n_name:
        do smth with data form files
但没有成功 文件名是sub01_T1w.json、sub01_T1w.nii.gz、sub01_T1w1.json、sub01_T1w1.nii.gz…

我建议使用它,它是python标准库中相对较新的一部分,使使用路径和文件更加容易。使用它的解决方案可能如下所示:

from pathlib import Path

p = Path('parent/folder/of/my/files')
json_names = {f.stem for f in p.iterdir() if f.suffix == '.json'}
nii_names = {Path(f.stem).stem for f in p.iterdir() if f.suffixes == ['.nii', '.gz']}
for file_name in json_names & nii_names:
    json_path = p / (file_name + '.json')
    nii_path = p / (file_name + '.nii.gz')
    with open(json_path) as json_file, open(nii_path) as nii_file:
        ...  # do things with the files' contents

如果要写入,请记住在退出只读
with
-block后,使用
open(json_path,'w')
重新打开目标。

文件的名称是什么?绝对应该允许任何文件扩展名吗?问题中添加了。Hello@Arne,感谢您的解决方案,但是对于带有['.nii','.gz']的nii_名称,它不起作用。类型(nii_names)=set{},不知道该怎么处理hey@Relyativist,我在那里有一个bug。我忘记了
stem
只删除一次后缀,所以对于有两个后缀的文件名,需要调用两次,比如
nii.gz
。它现在能用了吗?顺便说一下,我过去经常调试它。