Ang mga sumusunod na seksyon ay nagpapaliwanag kung paano lumikha at mag-save ng isang bagong file sa Python gamit ang isang bagong direktoryo (folder) bilang ang destinasyon.
- Error kapag tinukoy ang isang hindi umiiral na direktoryo na may open()(
FileNotFoundError
) os.makedirs()
Lumikha ng isang direktoryo- Halimbawang code para gumawa ng bagong file na may patutunguhan
Ang sumusunod ay isang halimbawa ng isang text file.
Kapag nag-iimbak ng mga larawan, nakadepende ito sa library kung maaari kang tumukoy ng path na may kasamang hindi umiiral na direktoryo (o kung awtomatiko itong gagawa ng isa kung wala ito).FileNotFoundError
Kung mangyari ang error na ito, maaari kang lumikha ng bagong direktoryo na may os.madeirs() bago isagawa ang function na i-save, tulad ng sa sumusunod na halimbawa.
Error kapag tinukoy ang isang hindi umiiral na direktoryo na may open()(FileNotFoundError)
Kapag gumagawa ng bagong file na may built-in na function na open(), ang isang error ay nangyayari kung ang isang path na naglalaman ng bagong direktoryo (isang direktoryo na hindi umiiral) ay tinukoy bilang ang unang argumento bilang ang destinasyon.(FileNotFoundError
)
open('not_exist_dir/new_file.txt', 'w')
# FileNotFoundError
Ang unang argumento ng open() ay maaaring isang ganap na landas o isang landas na nauugnay sa kasalukuyang direktoryo.
Para sa pangunahing paggamit ng open(), tulad ng paggawa ng bagong file sa isang kasalukuyang direktoryo, o pag-overwrit o pagdaragdag sa isang umiiral na file, sumangguni sa sumusunod na artikulo.
Lumikha ng isang direktoryo(os.makedirs())
Kapag lumilikha ng isang bagong file sa isang hindi umiiral na direktoryo, kinakailangan na lumikha ng direktoryo bago buksan ().
Kung gumagamit ka ng Python 3.2 o mas bago, maginhawang gumamit ng os.makedirs() na may argumentong exist_ok=True. Kahit na ang target na direktoryo ay mayroon na, walang error na magaganap at ang direktoryo ay maaaring malikha nang sabay-sabay.
import os
os.makedirs(new_dir_path, exist_ok=True)
Kung mayroon kang mas lumang bersyon ng Python at wala kang argumentong exist_ok sa os.makedirs(), magkakaroon ka ng error kung tutukuyin mo ang path sa isang direktoryo na umiiral, kaya gumamit ng os.path.exists() upang suriin para sa ang pagkakaroon ng direktoryo muna.
if not os.path.exists(new_dir_path):
os.makedirs(new_dir_path)
Tingnan ang sumusunod na artikulo para sa mga detalye.
- Mga Kaugnay na Artikulo:makedirs upang lumikha ng malalim na hierarchical na mga direktoryo nang recursively sa Python
Halimbawang code para gumawa ng bagong file na may patutunguhan
Ang sumusunod ay isang halimbawa ng code ng isang function na lumilikha at nagse-save ng bagong file sa pamamagitan ng pagtukoy sa direktoryo ng patutunguhan.
Ang unang argument na dir_path ay ang landas ng direktoryo ng patutunguhan, ang pangalawang argumento ng filename ay ang pangalan ng bagong file na gagawin, at ang ikatlong argumento na file_content ay ang nilalaman na isusulat, ang bawat isa ay tinukoy bilang isang string.
Kung wala ang tinukoy na direktoryo, lumikha ng bago.
import os
def save_file_at_dir(dir_path, filename, file_content, mode='w'):
os.makedirs(dir_path, exist_ok=True)
with open(os.path.join(dir_path, filename), mode) as f:
f.write(file_content)
Gamitin ang mga sumusunod.
save_file_at_dir('new_dir/sub_dir', 'new_file.txt', 'new text')
Sa kasong ito, ang file na new_file.txt na may nilalamang “bagong teksto” ay gagawin sa new_dir\sub_dir. Sa madaling salita, ang sumusunod na file ay bagong gagawa.new_dir/sub_dir/new_file.txt
Pinagsasama-sama ang direktoryo at mga pangalan ng file sa os.path.join().
Gayundin, ang mode ng open() ay tinukoy bilang isang argumento. Para sa mga text file, ang default na ‘w’ ay maayos, ngunit kung gusto mong lumikha ng binary file, itakda ang mode=’wb’.