2010-07-24 24 views
11

Tôi đang làm việc với một con trăn lập trình Macbook. Những gì tôi muốn biết là làm thế nào tôi có thể truy cập một số tập tin bằng cách sử dụng chức năng tập tin của Python. Tìm kiếm trên google không thành công với tôi.Tìm địa chỉ thư mục của một tập tin trên máy Mac

Ví dụ, Windows sẽ là một cái gì đó như thế này:

f = open(r'C:\text\somefile.txt') 

Làm thế nào tôi có thể truy cập vào một cái gì đó từ một thư mục lưu trên Desktop của máy Mac?

Trả lời

9

Máy tính để bàn chỉ là thư mục phụ của thư mục chính của người dùng. Bởi vì sau này không cố định, sử dụng một cái gì đó như os.path.expanduser để giữ cho mã chung chung. Ví dụ, để đọc một tập tin gọi là somefile.txt cư trú trên máy tính để bàn, sử dụng

import os 
f = open(os.path.expanduser("~/Desktop/somefile.txt")) 

Nếu bạn muốn điều này để được cầm tay trên hệ điều hành, bạn phải tìm ra nơi mà các thư mục máy tính để bàn tọa lạc trên mỗi hệ thống riêng biệt.

+0

_ "Nếu bạn muốn điều này được di chuyển trên các hệ điều hành" _ ... bạn cũng phải sửa các đường phân tách, ví dụ từ '/' sang ' \ 'nếu bạn truy cập Windows. Xem câu trả lời của tôi. –

4
f = open (r"/Users/USERNAME/Desktop/somedir/somefile.txt") 

hoặc thậm chí tốt hơn

import os 
f = open (os.path.expanduser("~/Desktop/somedir/somefile.txt")) 

Bởi vì trên bash (shell mặc định trên Mac Os X) ~/ đại diện cho thư mục home của người dùng.

+0

“Bởi vì trên hệ thống * nix' ~/'đại diện cho thư mục home của người dùng.” - Đây là sai, nó chỉ là một quy ước được sử dụng bởi các hệ vỏ phổ biến như bash. Cố gắng mở '~/somefile.txt' sẽ tìm thư mục có tên' ~ 'bên trong thư mục hiện tại. – Philipp

+0

sửa chữa, nhờ –

+1

Nó không được sửa chữa — 'open' không bao giờ mở rộng '~', và nó không bao giờ sử dụng trình bao. Hãy thử 'open (" ~/somefile.txt "," w ")' —it sẽ không tạo được tập tin trừ khi bạn có một thư mục có tên '~'. – Philipp

0

Bạn đang làm việc trên một Mac nên đường dẫn như "a/b/c.text" cũng tốt, nhưng nếu bạn sử dụng của Windows trong tương lai, bạn sẽ phải thay đổi tất cả các '/'-'\'. Nếu bạn muốn trở thành di động hơn và nền tảng-agnostic từ đầu, bạn sử dụng tốt hơn các os.path.join điều hành:

import os 

desktop = os.path.join(os.path.expanduser("~"), "Desktop") 
filePath = os.path.join(desktop, "somefile.txt") 

f = open(filePath) 
Các vấn đề liên quan