如何将存储在一个python文件中的变量中的文件路径传递给另一个python文件以供其读取?

anauzrmj  于 2021-07-13  发布在  Java
关注(0)|答案(3)|浏览(435)

我想把一个python脚本中获取的变量(文件路径)传递给另一个python脚本,这样它就可以读取文件并进行必要的计算。两个python脚本都按我希望的方式运行,它们只是互不说话。
第一个剧本是 NoShowGUI.py 用于浏览和获取csv文件的位置并将其存储在 booked_file_path :

def open_file():
browse_text.set('Loading...')
booked_file_path = askopenfile(parent=root, mode='rb', title='Choose a file', filetype=[('CSV file', '*.csv')])
if booked_file_path:
    read_csv = (booked_file_path)
    browse_text.set('Loaded')

def run():
    os.system('NoShowCalc.py')
    calculate_text.set("Calculating...")

第二个剧本是 NoShowCalc.py ,用于读取csv,以便对检索到的数据进行分析 booked_file_path :

import pandas as pd

booked = pd.read_csv(booked_file_path, parse_dates=['Appointment Date'])

然而,当我试图读取第二个py文件中的csv时,我又回来了 NameError: name 'booked_file_path' is not defined .
现在有人告诉我,要在python文件之间传递变量,我必须将它存储在第一个文件的函数中,然后在第二个python文件中调用该函数。从目前的情况来看,它看起来像是存储在一个函数中。我只是不知道如何在我的第二个py文件中正确调用它。
我还尝试导入我的第一个py文件 from NoShowCalcGUI.py import open_file 但是它不起作用,当gui弹出时,当我选择“计算”按钮时,它不断打开gui的新窗口。
有人能帮我通过考试吗 booked_file_path 变量到我的第二个py文件,以便它可以做必要的计算?在某种程度上,当我选择“计算”按钮时,程序不会继续循环?

mwyxok5s

mwyxok5s1#

假设你有两个文件, test1.py 以及 test2.py 测试1.py:

def my_func():
    FilePath = 'PATH'
    return FilePath

测试2.py:

from test6 import my_func

print(my_func())

在这里,我们导入函数 my_func 从test2.py,然后执行该函数(带有返回值),然后打印它。你可以做两件事:a。在返回文件路径的函数中 Package test1.py,然后导入函数b。将文件 Package 成 if __name__ == "__main__": 循环使用环境导入

3zwjbxry

3zwjbxry2#

使用环境变量。

import os

# Set environment variables

os.environ['API_USER'] = 'username'
os.environ['API_PASSWORD'] = 'secret'

# Get environment variables

USER = os.getenv('API_USER')
PASSWORD = os.environ.get('API_PASSWORD')

如果上面不起作用…使用下面
如何使用dotenv管理环境变量
随着使用的环境变量数量的增加,可能需要使用dotenv之类的库来帮助管理它们。它允许您通过从另一个文件读取特定目录中的文件来设置或更新这些文件的环境变量。当您将产品的不同阶段放在不同的目录中时,这很有用。通过使用dotenv,可以确保环境变量通过在该目录中工作而自动调整为所选的环境。但是请记住,dotenv是一个单独的文件,在跨系统转换时请注意不要忽略它。
dotenv从名为.env的文件读入环境变量。文件格式如下:

api-token = "abcdef_123456"

# Once that’s created and placed in the same folder as your Python file, environment variables can be called like so:

from dotenv import load_dotenv
load_dotenv()
import os
token = os.environ.get("api-token")

与python的许多方面一样,只要有合适的工具,实现环境变量并不麻烦。通过使用os包(尤其是os.environ),以及dotenv(当情况需要时),您就拥有了在python中开始使用环境变量所需的所有工具。
参考文献:https://www.nylas.com/blog/making-use-of-environment-variables-in-python/

qaxu7uf2

qaxu7uf23#

您可以将csv路径作为参数传递给第二个python脚本。这种方法增加了一些可移植性,因为如果需要的话,您可以稍后用其他方法替换第二个脚本。
noshowgui.py文件

os.system(f'NoShowCalc.py {booked_file_path}')

noshowcalc.py公司

import pandas as pd
import sys

booked = pd.read_csv(sys.argv[1], parse_dates=['Appointment Date'])

相关问题