这个代码是希望能使用Shuju实现监听剪贴板上复制的文件夹路径,然后用函数 show_files将文件夹下的所有文件路径保存到txt文件中
现在的问题是,怎么能把监听到的数据Shuju() 的字符串给到倒数第四行 path
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()
不知道你这个问题是否已经解决, 如果还没有解决的话:问题解答:
首先,我们需要使用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文件中。
如果剪贴板上的内容不是文件夹路径,则会输出"路径不是文件夹"的提示。
请注意,上述代码仅提供了解决问题的概要框架,具体实现可能需要根据你的具体需求进行调整。