python - 如何使用另一个脚本在不同目录中执行一个 python 脚本?
问题描述
我正在尝试通过另一个(file1.py)执行一个python脚本(file2.py)。第一个文件位于 test/file1.py 中,第二个文件位于 test/test1/file2.py 中。
例如 file2.py 有以下代码:
file = open("textfile.txt","w")
file.write("Hello world")
file.close()
所以我正在尝试从 file1.py 创建一个 .txt 文件。为此,我尝试了几种解决方案,例如:
import Test1.file2
或者
import os
os.system('Test1/file2.py')
或者
from subprocess import call
call('Test1/file2.py', shell='True')
在 file1.py 但它们似乎都不起作用。如果我想导入一个函数,第一个解决方案效果很好,但是当我想创建一个文本文件时它不起作用。
有谁知道我做错了什么以及如何解决?
解决方案
要运行另一个文件,您有一些选择:
最好的方法是将文件视为模块,导入它并调用它的方法,因此您必须将创建的 .txt 封装在方法中
#on file1.py
def createTxt():
#your txt creation goes here
并createTxt
从file2.py
importing调用file1.py
,它将运行该方法并创建 txt 文件
#on file2.py
import file1
createTxt()
您还可以使用execfile('file2.py')
它来执行它并将其作为脚本运行,或者通过os.system('python file2.py')
导入进行系统调用os
以也作为脚本运行
一般来说,第一个更安全,代码更好,尽可能避免使用其他两个
推荐阅读
- php - GitLab PHP docker 映像 - 您的系统中缺少请求的 PHP 扩展 gd
- jquery - 如何设置ajax的返回
- xml - 如何使用 NIFI 将 XML 文件转换为 CSV
- node.js - 如何在定义变量中包含定义的内容?
- ruby - 使用多个值访问 ruby 哈希中的特定值
- text-to-speech - 是否可以取消对 speakTextAsync 的调用?
- visual-studio-code - 为什么 SASS 代码在 Visual Studio Code 中没有以彩色形式显示?
- mysql - Mysql 导出 CSV 然后用 csv-parse 在 nodejs 中解析没有正确找到分隔符
- python - 如何使 plotly.express.line 线不相互连接?
- javascript - 根据文本内容使用 vanilla JavaScript 隐藏列中的行