2013-08-30 29 views
9

Tôi muốn tạo một tệp và ghi một số dữ liệu số nguyên vào tệp đó trong python. Ví dụ, tôi có một biến abc = 3 và tôi đang cố gắng để viết nó vào một tập tin (trong đó không tồn tại và tôi giả trăn sẽ tạo ra nó ngày của riêng mình):Quyền bị từ chối lỗi khi ghi vào một tệp bằng Python

fout = open("newfile.dat", "w") 
fout.write(abc) 

Thứ nhất, sẽ python tạo một newfile.dat ngày của riêng mình? Thứ hai, nó cho tôi lỗi này:

IOError: [Errno 13] Permission denied: 'newfile.dat' 

Có gì sai ở đây?

+0

Có python phải tự tạo, nhưng bạn có thể thấy quyền truy cập thư mục không? – badc0re

Trả lời

1

Để trả lời câu hỏi đầu tiên của bạn: có, nếu tệp không có Python sẽ tạo nó.

Thứ hai, người dùng (chính bạn) chạy tập lệnh python không có quyền ghi để tạo tệp trong thư mục.

+0

Đó là lỗi cấp phép đã được khắc phục ngay bây giờ nhưng lỗi này vẫn xuất hiện: LoạiError: dự kiến ​​đối tượng bộ đệm ký tự – user1921843

+1

Để viết một thứ khác không phải chuỗi, trước tiên cần phải chuyển đổi thành chuỗi. Xem: http://docs.python.org/2/tutorial/inputoutput.html#methods-of-file-objects –

+0

để thêm vào nhận xét của @RobertCaspary, bạn có thể sử dụng 'str (abc)' để chuyển đổi thành chuỗi . vì vậy 'fout.write (str (abc))' – mavili

0

Hãy chắc chắn rằng bạn có quyền ghi cho thư mục mà bạn đã cố gắng để tạo ra tập tin bằng cách tính

+1

Có thể giúp OP đưa ra một ví dụ – geotheory

2

Hãy đóng các tập tin nếu nó vẫn mở trên máy tính của bạn, sau đó thử chạy đoạn code python. Tôi hy vọng nó hoạt động

+0

Chế độ "w" có vẻ chính xác để tạo tệp.Nếu không phải là một tập tin mở, có lẽ đó là một vấn đề quyền với thư mục làm việc? OP sử dụng hệ điều hành nào? – killthrush

2

này cũng xảy ra khi bạn cố gắng để tạo ra một tập tin với tên giống như một thư mục:

import os 

conflict = 'conflict' 

# Create a directory with a given name 
try: 
    os.makedirs(conflict) 
except OSError: 
    if not os.path.isdir(conflict): 
     raise 

# Attempt to create a file with the same name 
file = open(conflict, 'w+') 

Kết quả:

IOError: [Errno 13] Permission denied: 'conflict' 
1

Tôi đã có cùng một vấn đề sử dụng cmd (cửa sổ dòng lệnh) như thế này

C:\Windows\System32> "G:\some python programs\frequency-counter-from-text.py" 

Nơi bên trong pyth trong hồ sơ một cái gì đó như thế này

myfile = open('myOutput.txt', 'w') 

Các lỗi được rằng khi bạn không sử dụng một đường dẫn đầy đủ, trăn sẽ sử dụng thư mục hiện tại của bạn, và vì thư mục mặc định trên cmd là

C:\Windows\System32 

giành 't làm việc, vì nó có vẻ là ghi-bảo vệ và nhu cầu sự cho phép & xác nhận hình thành một quản trị viên

Thay vào đó, bạn nên sử dụng đường dẫn đầy đủ, ví dụ:

myfile = open('G:\some python programs\myOutput.txt', 'w') 
Các vấn đề liên quan