2012-01-25 42 views
5

Tôi đang viết một kịch bản để dọn sạch máy tính để bàn, di chuyển các tệp dựa trên loại tệp. Bước đầu tiên, có vẻ như, là ls -1 /Users/user/Desktop (Tôi đang sử dụng Mac OSX). Vì vậy, bằng cách sử dụng Python, làm thế nào tôi sẽ chạy một lệnh, sau đó viết đầu ra cho một tập tin trong một thư mục cụ thể? Vì điều này sẽ không có giấy tờ, và tôi sẽ là người dùng duy nhất, tôi không quan tâm (thích?) Nếu nó sử dụng os.system().viết dòng lệnh đầu ra vào tập tin

+0

Bạn muốn di chuyển tệp nào? Hãy xem http://docs.python.org/library/shutil.html để biết các thao tác tệp bằng cách sử dụng Python. –

+0

Kịch bản lệnh Shell là đủ cho –

+1

Nếu bạn sử dụng tập lệnh shell, hãy đọc thêm về đường ống và chuyển hướng. –

Trả lời

13

Bạn có thể chuyển hướng đầu ra tiêu chuẩn sang bất kỳ tệp nào bằng cách sử dụng > trong lệnh.

$ ls /Users/user/Desktop > out.txt 

Sử dụng python,

os.system('ls /Users/user/Desktop > out.txt') 

Tuy nhiên, nếu bạn đang sử dụng python sau đó thay vì sử dụng ls lệnh bạn có thể sử dụng os.listdir để liệt kê tất cả các tập tin trong thư mục.

path = '/Users/user/Desktop' 
files = os.listdir(path) 
print files 
+0

Đẹp nhất. Cảm ơn bạn. – Daniel

+0

ImportError: Không có mô-đun được đặt tên theo hệ thống. –

+0

@ Suda.nese cách cố gắng nhập? Phiên bản Python của bạn là gì? – taskinoor

4

Sau khi lướt các tài liệu python để chạy lệnh shell và có được đầu ra bạn có thể sử dụng các mô-đun subprocess với phương pháp check_output.

Sau đó bạn có thể viết đơn giản rằng đầu ra cho một tệp với các hàm IO chuẩn của Python: File IO in python.

1

Để mở tệp, bạn có thể sử dụng lệnh f = open(/Path/To/File). Cú pháp là f = open('/Path/To/File', 'type') trong đó 'type' là r để đọc, w để viết và một để thêm. Các lệnh để thực hiện điều này là f.read()f.write('content_to_write'). Để có được kết quả từ một lệnh dòng lệnh, bạn phải sử dụng popen và subprocess thay vì os.system(). os.system() không trả về một giá trị. Bạn có thể đọc thêm trên popen here.

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