解除微信接收文件只读并持续监听解除只读
本帖最后由 永恒陌 于 2023-4-25 14:23 编辑又让chatgpt优化了一下,这回cpu占用率下去了,到0了,之前我这高达12的占用率
-----------前一阵发现微信接收到的文件默认变成了只读,十分离谱。
让chatgpt给搞一下,下边代码都是chatgpt生成的:
功能是通过注册表获取”Documents“位置,我的电脑是修改过文档位置的。所以获取用户目录的话下边是不存在的,所以通过注册表获取。应该是需要管理员权限。
然后获取wxid开头的所有文件夹中的接收文件的文件夹及其子文件夹。
遍历解除
持续监听,持续监听时发现微信会在文件落地后重命名,所以监听的是文件移动事件,重命名本质上是文件移动。我怕它比微信下手快。所以延迟0.1s修改
想挂后台的就自个搞一下吧。
记得先安装watchdog
over!
----新-----
import os
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
# 获取用户文档路径
import winreg
# 定义 Documents 文件夹的注册表键路径
documents_folder_key_path = r"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
# 打开 Documents 文件夹的注册表键
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, documents_folder_key_path) as key:
# 读取 Documents 文件夹的值
user_documents_path, _ = winreg.QueryValueEx(key, "Personal")
user_documents_path = user_documents_path + "\\WeChat Files"
# 输出 Documents 文件夹的位置
print("Documents 文件夹位置:", user_documents_path)
# 获取子文件夹下所有以 "wxid" 开头的文件夹中的 "FileStorage\File" 文件夹
parent_folder = user_documents_path# 根据需求设置父文件夹路径
target_folders = []
for dirpath, dirnames, filenames in os.walk(parent_folder):
for dirname in dirnames:
if dirname.startswith('wxid'):
target_folder = os.path.join(dirpath, dirname, 'FileStorage\\File')
if os.path.exists(target_folder):
target_folders.append(target_folder)
print('目标文件夹列表:', target_folders)
# 解除目标文件夹及其子文件夹下所有文件的只读状态
for target_folder in target_folders:
for dirpath, dirnames, filenames in os.walk(target_folder):
for filename in filenames:
file_path = os.path.join(dirpath, filename)
os.chmod(file_path, 0o777)# 解除文件只读状态
print('解除只读状态:', file_path)
# 监听目标文件夹及其子文件夹下新增文件,并解除只读状态
class FileEventHandler(FileSystemEventHandler):
def on_moved(self, event):
if event.is_directory:
return
time.sleep(0.1)
file_path = event.dest_path
os.chmod(file_path, 0o777)# 解除新增文件的只读状态
print('解除新增文件只读状态:', file_path)
event_handler = FileEventHandler()
observer = Observer()
for target_folder in target_folders:
observer.schedule(event_handler, path=target_folder, recursive=True)
observer.start()
print('开始监听文件夹...')
# 程序保持运行状态,等待事件的发生
try:
while observer.is_alive():
observer.join(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
----旧-----
import os
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
# 获取用户文档路径
import winreg
# 定义 Documents 文件夹的注册表键路径
documents_folder_key_path = r"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
# 打开 Documents 文件夹的注册表键
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, documents_folder_key_path) as key:
# 读取 Documents 文件夹的值
user_documents_path, _ = winreg.QueryValueEx(key, "Personal")
user_documents_path = user_documents_path + "\\WeChat Files"
# 输出 Documents 文件夹的位置
print("Documents 文件夹位置:", user_documents_path)
# 获取子文件夹下所有以 "wxid" 开头的文件夹中的 "FileStorage\File" 文件夹
parent_folder = user_documents_path# 根据需求设置父文件夹路径
target_folders = []
for dirpath, dirnames, filenames in os.walk(parent_folder):
for dirname in dirnames:
if dirname.startswith('wxid'):
target_folder = os.path.join(dirpath, dirname, 'FileStorage\\File')
if os.path.exists(target_folder):
target_folders.append(target_folder)
print('目标文件夹列表:', target_folders)
# 解除目标文件夹及其子文件夹下所有文件的只读状态
for target_folder in target_folders:
for dirpath, dirnames, filenames in os.walk(target_folder):
for filename in filenames:
file_path = os.path.join(dirpath, filename)
os.chmod(file_path, 0o777)# 解除文件只读状态
print('解除只读状态:', file_path)
# 监听目标文件夹及其子文件夹下新增文件,并解除只读状态
class FileEventHandler(FileSystemEventHandler):
def on_moved(self, event):
if event.is_directory:
return
time.sleep(0.1)
file_path = event.dest_path
os.chmod(file_path, 0o777)# 解除新增文件的只读状态
print('解除新增文件只读状态:', file_path)
event_handler = FileEventHandler()
observer = Observer()
for target_folder in target_folders:
observer.schedule(event_handler, path=target_folder, recursive=True)
observer.start()
print('开始监听文件夹...')
# 程序保持运行状态,等待事件的发生
try:
while True:
pass
except KeyboardInterrupt:
observer.stop()
observer.join()
重点是chatgpt生成的 我根据这个代码打包了下。需要的可以下https://cloud.189.cn/web/share?code=rUvmE3UrI7be(访问码:zyz9) 支持一下 这个烦恼最近也遇上了,一开始还以为是中毒了呢 lyie15 发表于 2023-4-25 11:36
这个烦恼最近也遇上了,一开始还以为是中毒了呢
谁说不是呢。这玩意太离谱了。它都存在有半年了应该。才发现不久。 是有两个月了,主要是我发EXCEL表给别人,他们编辑后,只能另存,一开始还说我中毒了 右键属性取消只读不就好了?
HZB586 发表于 2023-4-25 11:52
右键属性取消只读不就好了?
你这么说让我觉得你手机里有某一款开放世界游戏。
手工改属性后每次更新好像还会变成只读
Aaron-x 发表于 2023-4-25 12:01
手工改属性后每次更新好像还会变成只读
微信收的新文件都是只读的。所以才会这样。。