2012-07-28 58 views
15

Tôi đang gặp sự cố khi tạo thư mục rồi mở/tạo/ghi vào một tệp trong thư mục được chỉ định. Lý do dường như không rõ ràng với tôi. Tôi đang sử dụng os.mkdir() vàTạo tệp và thư mục qua Python

path=chap_name 
print "Path : "+chap_path      #For debugging purposes 
if not os.path.exists(path): 
    os.mkdir(path) 
temp_file=open(path+'/'+img_alt+'.jpg','w') 
temp_file.write(buff) 
temp_file.close() 
print " ... Done" 

tôi nhận được lỗi

OSError: [Errno 2] No such file or directory: 'Some Path Name'

Đường dẫn có dạng 'Folder Name với không gian bỏ trốn'

Tôi đang làm gì sai ở đây?


Cập nhật: Tôi cố gắng chạy mã mà không cần tạo thư mục

path=chap_name 
print "Path : "+chap_path      #For debugging purposes 
temp_file=open(img_alt+'.jpg','w') 
temp_file.write(buff) 
temp_file.close() 
print " ... Done" 

Tuy nhiên nhận được một lỗi. Bối rối hơn nữa.


Cập nhật 2: Vấn đề có vẻ là img_alt, nó chứa '/' trong một số trường hợp gây ra sự cố.

Vì vậy, tôi cần xử lý '/'. Có cách nào để thoát khỏi '/' hoặc xóa tùy chọn duy nhất không?

+1

'con đường + '/' + img_alt +' jpg'' .. tốt hơn để sử dụng 'os .path.join() 'tại đây – Levon

+0

@Ayos. Đăng đường dẫn bạn đang làm việc với –

+0

Tôi không thấy cách 'đường dẫn' và' chap_path' và 'img_alt' có liên quan. – tiwo

Trả lời

48
import os 

path = chap_name 

if not os.path.exists(path): 
    os.makedirs(path) 

filename = img_alt + '.jpg' 
with open(os.path.join(path, filename), 'wb') as temp_file: 
    temp_file.write(buff) 

Điểm mấu chốt là sử dụng os.makedirs thay cho os.mkdir. Nó là đệ quy, tức là nó tạo ra tất cả các thư mục trung gian. Xem http://docs.python.org/library/os.html

Mở tệp ở chế độ nhị phân khi bạn đang lưu trữ dữ liệu nhị phân (jpeg).

Để đối phó với Chỉnh sửa 2, nếu đôi khi img_alt có '/' trong đó:.

img_alt = os.path.basename(img_alt) 
+0

Tôi hiểu đây là cách thực hiện cú pháp chính xác, nhưng bạn có thể cho tôi biết tại sao lỗi xảy ra? Và tại sao chúng ta sử dụng 'wb' thay vì 'w'? – ffledgling

+1

OSError được nâng lên nếu thư mục đích được tạo (không thể truy cập thư mục đích nhất trong đường dẫn) vì thư mục gốc chưa tồn tại. os.mkdir không đệ quy nên nó sẽ không tạo tất cả các thư mục cần thiết dọc theo đường dẫn. os.makedirs. –

+1

'b' có ý nghĩa trên các nền tảng hoạt động khác nhau đối với tệp văn bản và tệp nhị phân. Để báo [docs] (http://docs.python.org/tutorial/inputoutput.html), "Python trên Windows phân biệt giữa văn bản và tệp nhị phân; các ký tự cuối dòng trong tệp văn bản được tự động thay đổi một chút khi dữ liệu được đọc hoặc ghi. " – tiwo

0
import os 
    os.mkdir('directory name') #### this command for creating directory 
    os.mknod('file name') #### this for creating files 
    os.system('touch filename') ###this is another method for creating file by using unix commands in os modules 
+0

Vui lòng xem câu hỏi gốc và câu trả lời được chấp nhận, nó nói rõ ràng rằng 'os.mkdir' không hoạt động, và câu trả lời được chấp nhận chỉ ra rằng' os.mkdirs' đã được sử dụng. – ffledgling

Các vấn đề liên quan