读取多个具有相同名称但不同扩展名的文件 Python
read multiple files with same name but different extension Python
我试图从具有相同名称但不同扩展名的文件夹中读取和写入文件 => 从中提取数据 => 重写。这是我的代码:
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 ...
我建议使用 pathlib,它是 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
块后用open(json_path, 'w')
重新打开目标。
我试图从具有相同名称但不同扩展名的文件夹中读取和写入文件 => 从中提取数据 => 重写。这是我的代码:
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 ...
我建议使用 pathlib,它是 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
块后用open(json_path, 'w')
重新打开目标。