Hướng dẫn how do i run a python script from another directory? - làm cách nào để chạy một tập lệnh python từ một thư mục khác?
Đã giải quyết câu trả lời của tôi dưới đây cho bất cứ ai có thể thấy điều này hữu ích. see my answer below for anyone who might find this helpful. Show
Tôi có hai tập lệnh a.py và B.Py. Trong thư mục hiện tại của tôi "C: \ Users \ myname \ Desktop \ Main", tôi chạy> Python a.py. Kịch bản đầu tiên, a.py chạy trong thư mục hiện tại của tôi, thực hiện một cái gì đó cho một loạt các tệp và tạo một thư mục mới (testa) với các phiên bản được chỉnh sửa của các tệp được chuyển đồng thời vào thư mục mới đó. Sau đó, tôi cần chạy B.Py cho các tệp trong Testa. Là người mới bắt đầu, tôi sẽ chỉ sao chép và dán tập lệnh B.Py của mình vào Testa và thực thi lệnh lại "> Python B.Py", chạy một số lệnh trên các tệp mới đó và tạo một thư mục khác (testb) với các tệp được chỉnh sửa đó. Tôi đang cố gắng loại bỏ những rắc rối của việc chờ đợi a.py kết thúc, chuyển sang thư mục mới đó, dán B.Py, và sau đó chạy B.Py. Tôi đang cố gắng viết một kịch bản bash thực thi các tập lệnh này trong khi duy trì hệ thống phân cấp thư mục của tôi.
Script a.py chạy trơn tru, nhưng B.Py hoàn toàn không thực thi. Không có thông báo lỗi nào xảy ra về B.Py không thành công, tôi chỉ nghĩ rằng nó không thể thực thi vì một khi a.py được thực hiện, B.Py không tồn tại trong thư mục mới đó. Có một kịch bản nhỏ mà tôi có thể thêm trong B.Py di chuyển nó vào thư mục mới không? Tôi thực sự đã thử thay đổi đường dẫn thư mục B.Py nhưng nó không hoạt động. Ví dụ trong B.Py:
Tôi đã thay đổi mydirs thành mydir_new trong tất cả các trường hợp trong B.Py, nhưng điều đó cũng không có gì khác biệt ... Tôi cũng không biết cách chuyển tập lệnh vào một thư mục mới trong Bash. Như một sơ đồ nhỏ của các thư mục:
TLDR: Làm cách nào để thực hiện a.py và B.Py từ thư mục thử nghiệm chính (kiểu tập lệnh bash?), Nếu B.Py dựa vào các tệp được tạo và lưu trữ trong Testa. Thông thường tôi sao chép và dán B.Py vào Testa, sau đó chạy B.Py - nhưng bây giờ tôi có hơn 200 tệp để sao chép và dán là một sự lãng phí thời gian.
Có hai cách bạn có thể muốn chạy tập lệnh Python nằm trong một thư mục khác - dưới dạng tập lệnh thông thường hoặc nhập và chạy nó như một mô -đun. Bài viết này tập trung vào cách chúng ta có thể làm điều này.– as a regular script or import and run it as a module. This article focuses on how we can do this. Nội dung
Các tệp và cấu trúc thư mụcThực hiện tập lệnh Python trên thiết bị đầu cuối/shellrunScript1.py to run two other files, script1.py and module1.py, located in another directory. We will execute script1.py as a regular Python script and module1.py as a module. Chạy tập lệnh Python trong một thư mục khác dưới dạng tập lệnh thông thường Thêm một con đường vào môi trường PythonrunScript1.py, but the content of the other two files will remain the same throughout this post. It is as follows: script1.py:
Phương pháp 1: Sử dụng gói SYS Phương pháp 2A: Thêm đường dẫn vào biến môi trường (trên Linux và Mac) module1.py:
Có hai cách bạn có thể muốn chạy tập lệnh Python nằm trong một thư mục khác - dưới dạng tập lệnh thông thường hoặc nhập và chạy nó như một mô -đun. Bài viết này tập trung vào cách chúng ta có thể làm điều này. module1.py has one class (BasicOperations()) with several functions performing different basic mathematical operations. Thực hiện tập lệnh Python trên thiết bị đầu cuối/shellChạy tập lệnh Python trong một thư mục khác dưới dạng tập lệnh thông thường“python3 script_name”. Chạy tập lệnh Python trong một thư mục khác dưới dạng mô -đun Thêm một con đường vào môi trường Python“Python3” to “Python” in every command and script, so it looks like this: “python script_name”. Phương pháp 1: Sử dụng gói SYSrunScript1.py as follows, Lưu ý: Trong bài đăng này, chúng tôi sẽ sử dụng dấu hiệu đô la ($) để hiển thị rằng chúng tôi đang chạy tập lệnh trên thiết bị đầu cuối, ví dụ, $ python3 chạy RunScript1.py. In this post, we will use the dollar sign ($) to show that we are running the script on the terminal, for example, $ python3 runScript1.py. Chạy tập lệnh Python trong một thư mục khác dưới dạng tập lệnh thông thườngTập lệnh Python có thể được sử dụng để thực thi một tập lệnh khác trên một thư mục khác với sự trợ giúp của mô -đun HĐH hoặc quy trình con. Sử dụng các mô -đun này để chạy các tệp Python tương đương với việc chạy tập lệnh Python trên shell/thiết bị đầu cuối. Cú pháp chung được sử dụng làos or subprocess module. Using these modules to run Python files is equivalent to running a Python script on the shell/terminal. The general syntax used is
Lưu ý: Nếu bạn đã cài đặt Python 2 và Python 3 trên máy tính của bạn và muốn chạy Python 2 chỉ định điều đó. If you have Python 2 and Python 3 installed on your computer and want to run Python 2 specify that. Bây giờ, hãy để các mã sau trong RunScript1.Py và sử dụng nó để thực thi Script1.pyrunScript1.pyand use it to execute script1.py runScript1.py:
Sau khi bạn chạy tập lệnh, bạn sẽ nhận được tin nhắn này: Output: ###os module### 7+5 is equal to 12 3*5 is equal to 15 ###subprocess package### 7+5 is equal to 12 3*5 is equal to 15 Lưu ý rằng mã trong __name__ == ‘__main__, trong script1.py được thực thi. Điều này là do chúng tôi chạy tập lệnh từ RunScript1.py dưới dạng tập lệnh thông thường. Để làm cho các đường dẫn ngắn hơn, bạn cũng có thể sử dụng os.chdir () để thay đổi thư mục làm việc hiện tại (điều này tương đương với việc sử dụng CD trong dòng lệnh) và sau đó chỉ chuyển tên tập lệnh như hiển thị bên dướios.chdir() to change the current working directory (this is equivalent to using cd in the command line) and then pass the script names only as shown below runScript1.py:
Chạy mã. Output: ####os#### 7+5 is equal to 12 3*5 is equal to 15 ####subprocess#### 7+5 is equal to 12 3*5 is equal to 15 Chạy tập lệnh Python trong một thư mục khác dưới dạng mô -đunBất cứ khi nào bạn nhập một mô -đun (ví dụ, chỉ là một tệp phyton) trong Python bằng cách viết Module Module1, ví dụ, trình thông dịch sẽ tìm mô -đun1.py ở những nơi sau.import module1“, for example, the interpreter will look for module1.py in the following places.
Nếu bạn cố gắng nhập một mô -đun không có sẵn ở các vị trí trên, Python sẽ ném modulenotfounderror. Chúng tôi có thể sử dụng gói SYS để kiểm tra và sửa đổi các thư mục để tìm kiếm. Sys.Path hiển thị một danh sách các thư mục mà các thông dịch viên Python tìm kiếm bất cứ khi nào một mô -đun đang được nhập. runScript1.py: 0Chạy tập lệnh. Output: 1Đó là những thư mục Python sẽ tìm kiếm bất cứ khi nào bạn nhập các mô -đun. Theo mặc định, thư mục hiện tại cũng được tìm kiếm. Trong trường hợp của chúng tôi, đó là yếu tố đầu tiên của danh sách (đó là nơi đặt RunScript1.py). Nếu chúng tôi cố gắng nhập module1.py, tại thời điểm này, chúng tôi sẽ nhận được modulenotfounderror vì thư mục chứa nó (‘/home/kiprono/desktop/test1,) không phải là một phần của sys.path. Do đó, chúng ta phải học cách thêm một đường dẫn đến môi trường Python. Thêm một con đường vào môi trường PythonCó hai phương pháp - sử dụng mô -đun SYS hoặc chỉnh sửa các biến môi trường Python một cách rõ ràng (chúng ta sẽ thấy cách thực hiện điều này trong Linux, Mac và Windows).using the sys module or editing Python environment variables explicitly (we will see how to do this in Linux, Mac, and Windows). Phương pháp 1: Sử dụng gói SYSHàm sys.path.append () cho phép chúng ta thêm một đường dẫn vào môi trường. Hãy để sử dụng nó để thêm ‘/home/kiprono/desktop/test1, sau đó chúng ta có thể nhập tập lệnh mô -đun1.py dưới dạng mô -đun Python hợp lệ. runScript1.py: 2Chạy tập lệnh. Output: 3Đó là những thư mục Python sẽ tìm kiếm bất cứ khi nào bạn nhập các mô -đun. Theo mặc định, thư mục hiện tại cũng được tìm kiếm., ‘/home/kiprono/Desktop/test1‘ has been added to the list of directories the interpreter will search, and therefore, we can import module1 and then load the BasicOperations() class. As said earlier, since module1.py is executed as a module, the code under __name__ == ‘__main__’ is not executed. Trong trường hợp của chúng tôi, đó là yếu tố đầu tiên của danh sách (đó là nơi đặt RunScript1.py). Nếu chúng tôi cố gắng nhập module1.py, tại thời điểm này, chúng tôi sẽ nhận được modulenotfounderror vì thư mục chứa nó (‘/home/kiprono/desktop/test1,) không phải là một phần của sys.path. Do đó, chúng ta phải học cách thêm một đường dẫn đến môi trường Python.Thêm một con đường vào môi trường Python 4Có hai phương pháp - sử dụng mô -đun SYS hoặc chỉnh sửa các biến môi trường Python một cách rõ ràng (chúng ta sẽ thấy cách thực hiện điều này trong Linux, Mac và Windows). Phương pháp 1: Sử dụng gói SYS (the file should be in the home folder(~)) and add the following line to the file: 5Hàm sys.path.append () cho phép chúng ta thêm một đường dẫn vào môi trường. Hãy để sử dụng nó để thêm ‘/home/kiprono/desktop/test1, sau đó chúng ta có thể nhập tập lệnh mô -đun1.py dưới dạng mô -đun Python hợp lệ., you can run the following command on the terminal to append the line: Linux:: 6macOS:: 7Như bạn có thể thấy, ‘/home/kiprono/desktop/test1 đã được thêm vào danh sách các thư mục mà trình thông dịch sẽ tìm kiếm, và do đó, chúng tôi có thể nhập module1 và sau đó tải lớp BasicOperations (). Như đã nói trước đó, vì module1.py được thực thi dưới dạng mô -đun, mã trong __name__ == ‘__main__, không được thực thi. runScript1.py: Mỗi khi chúng tôi bắt đầu một tập lệnh Python khác và cần nhập các mô -đun, chúng tôi phải nối các thư mục để tìm kiếm. Để tránh phải làm điều này, chúng ta có thể thêm (các) đường dẫn vào biến môi trường. Chúng ta sẽ thấy cách làm điều đó trong Linux, MacOS và Windows.Figure 2: Running the script before and after adding the path into the environment.Phương pháp 2A: Thêm đường dẫn vào biến môi trường (trên Linux và Mac)runScript1.py was executed with no error. Bạn có thể thêm nhiều đường dẫn bằng dòng: 9Nếu bạn muốn xóa một đường dẫn (giả sử Dir2), bạn có thể chạy lệnh sau hoặc xóa đường dẫn trên tệp .profile: 0Phương pháp 2b: Thêm đường dẫn vào biến môi trường (trên Windows)Đối với Windows (sử dụng Windows 11), hãy làm theo các bước sau:
Tôi có thể chạy Python từ bất kỳ thư mục nào không?Để có thể chạy tập lệnh, bất kể bạn đang tham gia thư mục nào: Di chuyển tập lệnh vào một thư mục được liệt kê bên trong biến môi trường đường dẫn $Điều đó cho biến đường dẫn.move the script into a directory listed inside the $PATH environment variable, like /usr/local/bin , or make a directory ad-hoc for your scripts and add that dir to the PATH variable.
Làm cách nào để đi đến một thư mục cụ thể trong Python?Để tìm thư mục làm việc hiện tại trong Python, hãy sử dụng os.getcwd () và để thay đổi thư mục làm việc hiện tại, hãy sử dụng hệ điều hành.Chdir (đường dẫn).os. getcwd() , and to change the current working directory, use os. chdir(path) .
Chúng ta có thể chạy một tệp python từ một tệp khác không?Làm cách nào để chạy một tệp python từ một tệp python khác?Sử dụng câu lệnh nhập để chạy tập lệnh Python trong một tập lệnh Python khác.Sử dụng phương thức ExecFile () để chạy tập lệnh Python trong một tập lệnh Python khác.Sử dụng mô -đun phụ để chạy tập lệnh Python trong một tập lệnh Python khác.Use the import Statement to Run a Python Script in Another Python Script. Use the execfile() Method to Run a Python Script in Another Python Script. Use the subprocess Module to Run a Python Script in Another Python Script. |