Python не создает файл с W +, используя абсолютный путь - PullRequest
0 голосов
/ 22 сентября 2019

Я проверил, что каталог существует, и я использую Pathlib

Насколько я могу судить, я успешно использовал тот же синтаксис, но для некоторых строк происходит сбой только кода с файлом, которого не существуетerror:

Только один пример сбоя

print(data_folder.is_dir()) #when I run, returns True

with (data_folder / "lensingtimedelayswithinimage.npy" ).open(mode="w+b") as lensingtimedelaysfile: 
     np.save(lensingtimedelaysfile, np.array(tdwithinimage))

и возвращает ошибку

FileNotFoundError: [Errno 2] Нет такого файла или каталога: 'C:\ Users \ angel_000 \ Documents \ ArchiveofDocuments \ 2019 \ New_Time_Delay_Code \ Thin_Inclined_Ring \ Rmax_200_fracinc_0p5 \ 200 \ LCDM \ zs_3_zl_1_c_299792458_H0_75 \ beta_0p065_0p065 \ Softened_ellipsoidal_isothermal \ b_1_s_0p1_eps_0p1_rotangle_0_centre_00 \ 1001 \ im0 \ lensingtimedelayswithinimage.npy '

другой пример втот же код

data_folder_main.mkdir(parents=True, exist_ok=True)

try:
    if (data_folder_main / "imagepositions.npy").stat().st_size == 0:
        raise ValueError('Empty file')
    with (data_folder_main / "imagepositions.npy").open(mode="rb") as imagepositionsfile:
        theta_all_arraylist = np.load(imagepositionsfile)        
except (FileNotFoundError, ValueError) as error:
    theta_all_arraylist = lensmodel.theta_all_arraylist(betaarray.astype('float64'))
    with (data_folder_main / "imagepositions.npy").open(mode="w+b") as imagepositionsfile: #save the image position of the particles
        np.save(imagepositionsfile, theta_all_arraylist)  #this runs fine each time      
    with (data_folder_main / "imagepositionscentre.npy").open(mode="w+b") as imagepositionscentrefile: save the image position of the particles
        np.save(imagepositionscentrefile, theta_centresource) #this fails each time with file not found

1 Ответ

1 голос
/ 22 сентября 2019

Приведенный вами пример (путь плюс имя файла) имеет длину 280 символов, что превышает максимальную длину имен файлов в Windows (около 260 символов, см., Например, https://stackoverflow.com/a/265785/9794932).Попробуйте использовать более короткое имя файла или путь (или оба!).

...