zhensolid hai 1 ano
pai
achega
ed8afd7f3a
Modificáronse 1 ficheiros con 38 adicións e 15 borrados
  1. 38 15
      xiaoya_compare_files.py

+ 38 - 15
xiaoya_compare_files.py

@@ -1,17 +1,25 @@
 # 处理115文件
-# python compare_files.py - -pan115 "115share_list.txt" "115share_list [tg].txt"
+# python compare_files.py --pan115 "115share_list.txt" "115share_list [tg].txt"
 
 # 处理夸克文件
-# python compare_files.py - -quark "quarkshare_list.txt" "quarkshare_list [tg].txt"
+# python compare_files.py --quark "quarkshare_list.txt" "quarkshare_list [tg].txt"
 
 # 同时处理两种文件
-# python compare_files.py - -pan115 "115share_list.txt" "115share_list [tg].txt" - -quark "quarkshare_list.txt" "quarkshare_list [tg].txt"
+# python compare_files.py --pan115 "115share_list.txt" "115share_list [tg].txt" --quark "quarkshare_list.txt" "quarkshare_list [tg].txt"
 import sys
+import os
 import argparse
 
 def read_file(filename):
-    with open(filename, 'rb') as f:
-        return f.read().decode('utf-8').splitlines()
+    try:
+        with open(filename, 'rb') as f:
+            return f.read().decode('utf-8').splitlines()
+    except UnicodeDecodeError:
+        print(f"文件 {filename} 编码错误,请确保是UTF-8编码")
+        sys.exit(1)
+    except Exception as e:
+        print(f"读取文件 {filename} 时出错: {e}")
+        sys.exit(1)
 
 def get_share_type(filename):
     """判断分享文件类型"""
@@ -38,18 +46,23 @@ def extract_share_id(line, share_type):
     parts = line.strip().split()
     if len(parts) >= 3:
         if share_type == "115":
-            return parts[1]  # 115格式:第二部分是分享ID
+            return parts[1].strip()  # 115格式:第二部分是分享ID
         elif share_type == "quark":
-            return f"{parts[1]}_{parts[2]}"  # 夸克格式:第二和第三部分组合
+            return f"{parts[1].strip()}_{parts[2].strip()}"  # 夸克格式:第二和第三部分组合
     return None
 
 def get_category(line):
     """获取分类路径(第一个部分)"""
     parts = line.strip().split()
-    return parts[0] if parts else ""
+    return parts[0].strip() if parts else ""
 
 def merge_files(file1, file2):
     """根据文件名判断类型并合并文件"""
+    # 检查文件是否存在
+    for file in [file1, file2]:
+        if not os.path.exists(file):
+            raise FileNotFoundError(f"文件不存在: {file}")
+    
     # 判断并验证文件类型
     share_type = verify_file_types(file1, file2)
     output_prefix = f"merged_{share_type}"
@@ -57,6 +70,11 @@ def merge_files(file1, file2):
     output_file = f"{output_prefix}share_list.txt"
     removed_file = f"removed_{share_type}share_items.txt"
     
+    # 检查输出文件是否已存在
+    for file in [output_file, removed_file]:
+        if os.path.exists(file):
+            print(f"警告:文件 {file} 已存在,将被覆盖")
+    
     # 读取并合并所有有效行
     lines1 = [line for line in read_file(file1) if line.strip()]
     lines2 = [line for line in read_file(file2) if line.strip()]
@@ -85,13 +103,14 @@ def merge_files(file1, file2):
                 share_dict[key] = line
 
     # 写入去重后的文件
-    with open(output_file, 'w', encoding='utf-8') as f:
+    with open(output_file, 'w', encoding='utf-8', newline='\n') as f:
         for line in share_dict.values():
             f.write(line + '\n')
     
     # 写入删除项清单
-    with open(removed_file, 'w', encoding='utf-8') as f:
-        f.writelines(line + '\n' for line in removed_lines)
+    with open(removed_file, 'w', encoding='utf-8', newline='\n') as f:
+        for line in removed_lines:
+            f.write(line + '\n')
     
     print(f"处理完成!")
     print(f"合并后的文件:{output_file}")
@@ -107,12 +126,16 @@ def main():
     
     args = parser.parse_args()
     
+    if not args.pan115 and not args.quark:
+        parser.print_help()
+        sys.exit(1)
+    
     # 处理115网盘文件
     if args.pan115:
         try:
             merge_files(args.pan115[0], args.pan115[1])
-        except FileNotFoundError:
-            print(f"未找到115网盘分享文件: {args.pan115}")
+        except FileNotFoundError as e:
+            print(f"错误: {e}")
         except ValueError as e:
             print(f"处理115网盘文件时出错: {e}")
     
@@ -120,8 +143,8 @@ def main():
     if args.quark:
         try:
             merge_files(args.quark[0], args.quark[1])
-        except FileNotFoundError:
-            print(f"未找到夸克网盘分享文件: {args.quark}")
+        except FileNotFoundError as e:
+            print(f"错误: {e}")
         except ValueError as e:
             print(f"处理夸克网盘文件时出错: {e}")