python传递字符串到另一个函数

这个代码是希望能使用Shuju实现监听剪贴板上复制的文件夹路径,然后用函数 show_files将文件夹下的所有文件路径保存到txt文件中
现在的问题是,怎么能把监听到的数据Shuju() 的字符串给到倒数第四行 path

img

import pyperclip
import time
import os


def show_files(all_files):
    """读取path对应文件夹下的所有文件路径"""
    file_list = os.listdir(all_files)  # 读取并建立文件名列表
    for fi in file_list:
        fi_d = os.path.join(all_files, fi)  # 合并文件名和路径
        if os.path.isdir(fi_d):  # 判断是否为文件目录
            show_files(fi_d)
        else:
            str = os.path.join(all_files, fi_d)[:-3] + '.ma' + '\n'  # [:-3]从路径尾部减几个字符,\n换行
            out.writelines(str)


class Shuju():
    def Dayin(self):
        while True:
            # jianting().main()
            t = jianting().main()
            return (t)


class jianting():
    def clipboard_get(self):
        """获取剪贴板数据"""
        data = pyperclip.paste()
        return data

    def main(self):
        """后台脚本:每隔0.2秒,读取剪切板文本,检查有无指定字符或字符串,如果有则执行替换"""
        # recent_txt 存放最近一次剪切板文本,初始化值只多执行一次paste函数读取和替换
        recent_txt = self.clipboard_get()
        while True:
            # txt 存放当前剪切板文本
            txt = self.clipboard_get()
            # 剪切板内容和上一次对比如有变动,再进行内容判断,判断后如果发现有指定字符在其中的话,再执行替换
            if txt != recent_txt:
                # print(f'txt:{txt}')
                recent_txt = txt  # 没查到要替换的子串,返回None
                return recent_txt

            # 检测间隔(延迟0.2秒)
            time.sleep(0.2)


if __name__ == '__main__':
    Shuju().lihai()

path = r"C:/Users/TAL/Desktop/A"  # 目标文件夹路径
out = open(r"C:/Users/TAL/Desktop/A/out.txt", 'w')
show_files(path)
out.close()


| 表头 | 表头 |
| ------ | ------ |
| 单元格 | 单元格 |
| 单元格 | 单元格 |



Dayin里面
global path
path = t
把 path 放在程序前面

该回答引用chatgpt:


if __name__ == '__main__':
    shuju = Shuju()
    t = shuju.Dayin()
    path = t  # 将Shuju类中获取的数据赋值给path变量
    out = open(r"C:/Users/TAL/Desktop/A/out.txt", 'w')
    show_files(path)
    out.close()
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    问题解答:

    首先,我们需要使用watchdog库来监听剪贴板。然后,我们需要使用os库来获取文件夹中的所有文件路径。最后,使用open函数将文件路径保存到txt文件中。

    解决方案如下:

    import clipboard
    import os
    
    # 使用watchdog库监听剪贴板变化的Shuju类
    class Shuju:
        def on_change(self):
            # 监听到剪贴板变化后,获取剪贴板中的内容
            path = clipboard.paste()
            # 调用show_files函数,并传递path参数
            show_files(path)
    
    # 定义show_files函数,接收路径参数用于保存文件路径到txt文件中
    def show_files(path):
        # 判断路径是否为文件夹
        if os.path.isdir(path):
            # 获取文件夹中的所有文件路径
            file_paths = []
            for root, dirs, files in os.walk(path):
                for file in files:
                    file_paths.append(os.path.join(root, file))
    
            # 将文件路径保存到txt文件中
            with open('file_paths.txt', 'w') as f:
                for file_path in file_paths:
                    f.write(file_path + '\n')
        else:
            print('路径不是文件夹')
    
    # 创建Shuju对象并监听剪贴板
    s = Shuju()
    s.on_change()
    

    这样,当剪贴板上的文件夹路径发生变化时,Shuju类的on_change方法会被调用,将路径传递给show_files函数,该函数会将文件夹中的所有文件路径保存到名为file_paths.txt的txt文件中。

    如果剪贴板上的内容不是文件夹路径,则会输出"路径不是文件夹"的提示。

    请注意,上述代码仅提供了解决问题的概要框架,具体实现可能需要根据你的具体需求进行调整。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^