2011-11-26 38 views
10

Tôi muốn tệp .py của tôi chấp nhận tệp tôi cung cấp làm đầu vào trong dòng lệnh. Tôi đã sử dụng sys.argv [] và cũng là fileinput nhưng tôi không nhận được kết quả đầu ra.Làm cách nào để mở tệp được đặt dưới dạng đối số dòng lệnh trong python?

+3

Câu hỏi của bạn không rõ ràng. Không rõ mục tiêu của bạn là gì, sản lượng bạn mong đợi, những gì bạn đã thử và làm thế nào nó đã bị làm phiền. Thay vì nói "Tôi đã sử dụng' sys.argv [] 'và cả' tệp tin đầu ra' ", sẽ tốt hơn để hiển thị mã thực của bạn. Thay vì nói "Tôi không nhận được đầu ra," tốt hơn cho thấy đầu ra bạn nhận được và đầu ra bạn mong đợi. –

+0

Nhiệm vụ là tôi cần phải kiểm tra xem tập tin có chứa chuỗi là một địa chỉ email hợp lệ. ví dụ: nếu có bốn dòng, tôi cần kiểm tra xem mỗi dòng có phải là địa chỉ email hợp lệ hay không. Tuy nhiên tôi đã có thể kiểm tra điều đó. Tôi nhận được đầu ra yêu cầu cho tệp mà tôi đã cung cấp làm đầu vào. Tôi đang cố gắng sửa đổi nó để chấp nhận bất kỳ tập tin nào được đưa ra như là đối số dòng lệnh cho tệp .py cụ thể để nó sẽ lấy tệp và kiểm tra xem tệp đó có địa chỉ email hợp lệ hay không. – Ram

+0

Tôi đã làm chương trình này trong máy ảo của tôi (ubuntu) vì vậy tôi không thể sao chép dán nó vào máy tính cửa sổ của mình. – Ram

Trả lời

18

Nếu bạn sẽ viết kịch bản sau đây:

#!/usr/bin/env python 

import sys 

with open(sys.argv[1], 'r') as my_file: 
    print(my_file.read()) 

và chạy nó, nó sẽ hiển thị nội dung của tập tin tên bạn vượt qua trong đối số đầu tiên như thế:

./my_script.py test.txt 

(trong ví dụ trên, tệp này sẽ là test.txt).

+0

@ Tadeck - Hey nó đã hoạt động. : D Cảm ơn :) – Ram

+0

@Ram: Tôi vui vì nó đã giúp. Bạn có thêm câu hỏi nào không? – Tadeck

+0

Không, tôi thực sự đã gửi kết quả đầu ra và có điểm số đầy đủ! cảm ơn :) Tôi đã làm nó với 'sys.arg' nhưng tôi có lỗi vì vậy không biết những gì sai lầm tôi đã làm. Sau khi đọc bài viết của bạn, tôi đã học được rằng 'sys.argv' chấp nhận các đối số dòng lệnh dưới dạng mảng và đó là lý do tại sao chúng ta sử dụng chỉ mục. – Ram

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