Hướng dẫn how to pass file as argument in python - cách chuyển tệp dưới dạng đối số trong python

Giả sử tôi có một hàm đọc tệp .txt và tạo các mảng dựa trên các cột của dữ liệu trong tệp đó. Những gì tôi có ngay trong chức năng trông giống như:

data = open("some_file_name.txt","r")

Nhưng nếu tôi muốn thay đổi tệp .txt mà chức năng đọc, tôi phải tự đi vào mã và nhập tên tệp mới trước khi chạy lại. Thay vào đó, làm thế nào tôi có thể chuyển bất kỳ tên tệp nào cho chức năng để có vẻ như:

my_function(/filepath/some_file_name.txt):
    data = open("specified_file_name.txt","r")

Đã hỏi ngày 18 tháng 6 năm 2014 lúc 18:38Jun 18, 2014 at 18:38

Hướng dẫn how to pass file as argument in python - cách chuyển tệp dưới dạng đối số trong python

Tôi nghĩ bạn muốn

def my_function(filepath):
    data = open(filepath, "r")
    ...

và sau đó

my_function("/filepath/some_file_name.txt")

hoặc tốt hơn:

def my_function(data):
    ...

và sau đó

with open("/filepath/some_file_name.txt", "rb") as data:
    my_function(data)

hoặc tốt hơn:

Phiên bản sau cho phép bạn chuyển trong bất kỳ đối tượng giống như tệp nào cho

my_function(/filepath/some_file_name.txt):
    data = open("specified_file_name.txt","r")
5.

def my_func(data):
    if isinstance(data, basestring):
        with open(data, 'rb') as f:
            return my_func(f)
    ...

Cập nhật: Nếu bạn muốn nhận được ưa thích và cho phép tên tệp hoặc tay cầm tệp:Jun 18, 2014 at 18:43

Đã trả lời ngày 18 tháng 6 năm 2014 lúc 18:43Ben

Benben1 gold badge39 silver badges48 bronze badges

1


Python cung cấp một mô-đun GetOpt giúp bạn phân tích các tùy chọn và đối số dòng lệnh.getopt module that helps you parse command-line options and arguments.

$ python test.py arg1 arg2 arg3

Mô-đun Python SYS cung cấp quyền truy cập vào bất kỳ đối số dòng lệnh nào thông qua sys.argv. Điều này phục vụ hai mục đích -sys module provides access to any command-line arguments via the sys.argv. This serves two purposes −

  • sys.argv là danh sách các đối số dòng lệnh.

  • Len (sys.argv) là số lượng đối số dòng lệnh.

Ở đây sys.argv [0] là chương trình tức là. Tên tập lệnh.

Thí dụ

Xem xét kiểm tra tập lệnh sau.py -

#!/usr/bin/python

import sys

print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)

Bây giờ chạy trên tập lệnh như sau -

$ python test.py arg1 arg2 arg3

Sản phẩm này sau kết quả -

my_function(/filepath/some_file_name.txt):
    data = open("specified_file_name.txt","r")
0

Lưu ý - Như đã đề cập ở trên, đối số đầu tiên luôn là tên tập lệnh và nó cũng được tính bằng số lượng đối số. − As mentioned above, first argument is always script name and it is also being counted in number of arguments.

Phân tích đối số dòng lệnh

Python cung cấp một mô-đun GetOpt giúp bạn phân tích các tùy chọn và đối số dòng lệnh. Mô -đun này cung cấp hai chức năng và một ngoại lệ để kích hoạt phân tích đối số dòng lệnh.getopt module that helps you parse command-line options and arguments. This module provides two functions and an exception to enable command line argument parsing.

phương thức getOpt.getOpt

Phương thức này phân tích các tùy chọn dòng lệnh và danh sách tham số. Sau đây là cú pháp đơn giản cho phương pháp này -

my_function(/filepath/some_file_name.txt):
    data = open("specified_file_name.txt","r")
1

Dưới đây là chi tiết của các tham số -

  • Args - đây là danh sách đối số được phân tích cú pháp. − This is the argument list to be parsed.

  • Tùy chọn - Đây là chuỗi các chữ cái tùy chọn mà tập lệnh muốn nhận ra, với các tùy chọn yêu cầu đối số phải được theo sau bởi một dấu hai chấm (:). − This is the string of option letters that the script wants to recognize, with options that require an argument should be followed by a colon (:).

  • Long_Options - Đây là tham số tùy chọn và nếu được chỉ định, phải là danh sách các chuỗi có tên của các tùy chọn dài, cần được hỗ trợ. Các tùy chọn dài, yêu cầu một đối số phải được theo sau bởi một dấu hiệu bằng nhau ('='). Để chỉ chấp nhận các tùy chọn dài, các tùy chọn phải là một chuỗi trống. − This is optional parameter and if specified, must be a list of strings with the names of the long options, which should be supported. Long options, which require an argument should be followed by an equal sign ('='). To accept only long options, options should be an empty string.

  • Phương thức này trả về giá trị bao gồm hai phần tử: đầu tiên là danh sách các cặp (tùy chọn, giá trị). Thứ hai là danh sách các đối số chương trình còn lại sau khi danh sách tùy chọn bị tước.(option, value) pairs. The second is the list of program arguments left after the option list was stripped.

  • Mỗi cặp tùy chọn và giá trị được trả về đều có tùy chọn là phần tử đầu tiên của nó, được đặt tiền tố với dấu gạch nối cho các tùy chọn ngắn (ví dụ: '-x') hoặc hai dấu gạch nối cho các tùy chọn dài (ví dụ: '-tùy chọn dài').

Ngoại lệ getOpt.GetOpterRor

Điều này được nêu ra khi một tùy chọn không được công nhận được tìm thấy trong danh sách đối số hoặc khi một tùy chọn yêu cầu một đối số không được đưa ra.

Đối số cho ngoại lệ là một chuỗi chỉ ra nguyên nhân của lỗi. Các thuộc tính MSG và OPT cung cấp thông báo lỗi và tùy chọn liên quan.msg and opt give the error message and related option.

Thí dụ

Hãy xem xét chúng tôi muốn truyền hai tên tệp thông qua dòng lệnh và chúng tôi cũng muốn đưa ra một tùy chọn để kiểm tra việc sử dụng tập lệnh. Việc sử dụng tập lệnh như sau -

my_function(/filepath/some_file_name.txt):
    data = open("specified_file_name.txt","r")
2

Đây là tập lệnh sau để kiểm tra.py -

my_function(/filepath/some_file_name.txt):
    data = open("specified_file_name.txt","r")
3

Bây giờ, chạy trên tập lệnh như sau -

my_function(/filepath/some_file_name.txt):
    data = open("specified_file_name.txt","r")
4

python_basic_syntax.htm

Làm thế nào để bạn vượt qua tên tệp làm đối số trong Python?

Điều này có thể được thực hiện bằng cách chuyển một danh sách các tên tệp được phân tách bằng dấu phẩy là một trong các đối số trong khi chạy tập lệnh. Ví dụ: nếu bạn có một tập lệnh gọi là `myscipt.py ', bạn sẽ chạy nó như: python myscript.py file1, file2, file3.passing a comma-separated list of file names as one of the arguments while running the script. FOr example, if you have a script called `myscipt.py' you would run it as: python myscript.py file1,file2,file3.

Làm thế nào để bạn truyền một đường dẫn tệp dưới dạng đối số dòng lệnh trong Python?

Để sử dụng nó, bạn chỉ cần chuyển một đường dẫn hoặc tên tệp vào một đối tượng đường dẫn mới () bằng cách sử dụng dấu gạch chéo về phía trước và nó xử lý phần còn lại: Lưu ý hai điều ở đây: bạn nên sử dụng dấu gạch chéo về phía trước với các hàm pathlib. Đối tượng đường dẫn () sẽ chuyển đổi các dấu gạch chéo về phía trước thành đúng loại chém cho hệ điều hành hiện tại.pass a path or filename into a new Path() object using forward slashes and it handles the rest: Notice two things here: You should use forward slashes with pathlib functions. The Path() object will convert forward slashes into the correct kind of slash for the current operating system.

Làm cách nào để vượt qua danh sách các tệp trong Python?

Cách liệt kê các tập tin trong một thư mục trong Python..
Trong Python, chúng tôi có thể muốn có một danh sách các tệp hoặc thư mục trong một thư mục được chỉ định. ....
Sử dụng mô -đun HĐH. ....
Để liệt kê các tệp ở một đường dẫn cụ thể, chúng ta có thể chỉ cần đưa đường dẫn dưới dạng chuỗi cho hàm. ....
Sử dụng mô -đun Quả cầu. ....
Chúng ta cũng có thể in tên tệp một cách đệ quy bằng phương pháp IGLOB ..

Bạn có thể vượt qua một chức năng như một python đối số?

Bởi vì các chức năng là các đối tượng, chúng ta có thể truyền chúng như các đối số cho các chức năng khác.Các chức năng có thể chấp nhận các chức năng khác vì các đối số còn được gọi là các hàm bậc cao hơn.Trong ví dụ dưới đây, một lời chào hàm được tạo có chức năng như một đối số.. Functions that can accept other functions as arguments are also called higher-order functions. In the example below, a function greet is created which takes a function as an argument.