2013-02-07 30 views
12

Tôi đang làm việc trên một tập lệnh Python đơn giản (2.7.3), nhưng tôi phải lấy Thư mục chính của người dùng. tôi đã cố gắng:Python os.environ ["HOME"] hoạt động ở chế độ chờ nhưng không có trong tập lệnh

import os 
home_folder = os.environ["HOME"] 

Và nó hoạt động tốt khi tôi đang chạy mã này vào IDLE, nhưng nếu tôi khởi động nó từ cmd, nó mang lại cho tôi: «KeyError: 'HOME'»

Có thể ai đó cho tôi biết tại sao? Làm thế nào tôi có thể giải quyết vấn đề này?

+0

Bạn đang chạy kịch bản nào trong môi trường? Linux, Windows, cron? –

Trả lời

1

Có vẻ như bạn đang cố gắng chạy ứng dụng này trên Windows dựa hoàn toàn vào "[khởi chạy] từ cmd". IDLE mang đến cho bạn sự thuận tiện; trên Windows sử dụng USERPROFILE thay vì HOME. %USERPROFILE% envar là Win32 $HOME.

15

Sử dụng Windows USERPROFILE, thay vì HOME. Windows không có HOME và các hệ điều hành khác không có USERPROFILE, do đó, việc sử dụng một trong hai phiên bản này sẽ độc lập với nền tảng.

Để giữ cho nền tảng độc lập, bạn có thể sử dụng expanduser từ os.path, như vậy:

import os.path 
home_folder = os.path.expanduser('~') 

Trên một mặt lưu ý, bạn có thể sử dụng print(os.environ) để xem tất cả các biến môi trường bạn có thể truy cập, trong đó cho thấy rằng IDLE có tính năng bổ sung.

+0

Cảm ơn! Nó thực sự làm tôi bối rối, đó là lý do tại sao tôi hỏi nó ở đây. – Telmo

+0

Tuyệt vời, cảm ơn! – user1063287

2

Windows không có biến môi trường HOME. Nó sử dụng USERPROFILE thay vào đó. Để giải quyết vấn đề bạn có thể xác định biến mới "HOME" gõ trên bàn điều khiển của bạn:

set HOME=%USERPROFILE% 

như một bản sao của biến USERPROFILE.

Bạn có thể kiểm tra xem họ là đánh máy giống hệt nhau:

echo %USERPROFILE% 
echo %HOME% 

Nó sẽ làm việc cho phiên hiện tại.

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