功能

在file1中获得一个变量(文件路径),传递到file2中

方法1:在程序路径下写入.txt文件

file1:

#coding=utf-8
#file1
from PyQt5 import QtWidgets, QtCore


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.button = QtWidgets.QPushButton('选择文件夹', self)
        self.button.setGeometry(QtCore.QRect(100, 30, 200, 50))
        self.button.clicked.connect(self.select_folder)

    def select_folder(self):
        folder_path = QtWidgets.QFileDialog.getExistingDirectory(self, '选择文件夹')
        print('选择的文件夹路径为:', folder_path)
        # 保存所选路径
        with open('folder_path.txt', 'w') as f:
            f.write(folder_path)


if __name__ == '__main__':
    app = QtWidgets.QApplication([])
    window = MainWindow()
    window.show()
    app.exec_()

创建了一个 MainWindow 类,并在窗口中添加了一个按钮来选择文件夹。单击按钮后,使用 QFileDialog 弹出对话框来选择文件夹路径,并把路径打印到控制台上。

file2:

#coding=utf-8
# file2.py
import file1
import os

# 获取所需路径
with open('folder_path.txt', 'r') as f:
    folder_path = f.read()
# 加上"设计结果"文件夹的路径
design_folder_path = os.path.join(folder_path, '设计结果')
print('设计结果文件夹路径为:', design_folder_path)

将程序 1 中选择的文件夹路径写入文件或者环境变量中,在程序 2 中访问文件或者环境变量即可。

效果

在这里插入图片描述

方法2:在程序路径下写入环境变量中

file1:

import os
from PyQt5 import QtWidgets, QtCore


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.button = QtWidgets.QPushButton('选择文件夹', self)
        self.button.setGeometry(QtCore.QRect(100, 30, 200, 50))
        self.button.clicked.connect(self.select_folder)

    def select_folder(self):
        folder_path = QtWidgets.QFileDialog.getExistingDirectory(self, '选择文件夹')
        print('选择的文件夹路径为:', folder_path)
        # 将所选路径写入系统环境变量
        os.environ['FOLDER_PATH'] = folder_path

if __name__ == '__main__':
    app = QtWidgets.QApplication([])
    window = MainWindow()
    window.show()
    app.exec_()

使用 os.environ 字典将 folder_path 路径写入了名为 FOLDER_PATH 的系统环境变量中。

然后,你可以在程序 2 中使用 os.environ 字典访问该环境变量,以获取所需的路径

file2:

import os

# 获取所需路径
folder_path2 = os.environ.get('FOLDER_PATH')
print("文件夹路径为:", folder_path2)

# 加上 "设计结果" 文件夹的路径
design_folder_path = os.path.join(folder_path2, '设计结果')
print('设计结果文件夹路径为:', design_folder_path)

这段程序使用 os.environ.get() 方法获取名为 FOLDER_PATH 的环境变量,并将其存储在 folder_path2 变量中。然后,程序将使用 os.path.join() 方法将 FOLDER_PATH 路径与“设计结果”文件夹路径合并,以获取完整路径,并将其存储在名为 design_folder_path 的变量中。最后,程序将打印出完整的设计结果文件夹路径。

两种方法有何区别、利弊

区别

使用系统环境变量可以在应用程序之间共享数据。此外,环境变量的特殊之处在于它们在首次启动进程时由操作系统加载,因此在应用程序中可用。
另一方面,将数据保存到文件中可以轻松地跨程序和系统操作。文件通常更为灵活,因为可以直接编辑、删除或者替换文件,而无需调用特殊 API 或者系统功能。

使用系统环境变量的优缺点:

优点:

环境变量在各个进程中都可用,可以用于跨程序或系统操作。

环境变量与操作系统集成紧密,可以快速访问和修改。

在使用大量变量时,环境变量可以更有效地使用内存。

缺点:

需要使用操作系统或库功能来创建、修改或删除环境变量

环境变量可能会被其他应用程序或系统配置修改或覆盖。

将数据存储到文件中的优缺点:

优点:

存储到文件中的数据可以轻松地与其他程序或系统交互,因为文件具有平台无关性。

可以快速访问和修改文件,而无需特殊 API 或系统功能。

存储到文件中的数据可以在不同计算机之间共享。

缺点:

在使用多个变量时,存储到文件中的方法可能会占用更多的磁盘空间。

为更新数据,需要打开、修改、保存和关闭文件,这可能需要更多的时间和代码。

总之,通过比较应用程序的需求和要求,以及考虑操作的复杂性和风险,可以选择最适合和方便的方法来传递和共享所需的数据。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐