Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Submit feedback
    • Contribute to GitLab
  • Sign in
M
mfang2.0
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 92
    • Issues 92
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 1
    • Merge Requests 1
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • 魔方Web开发组
  • mfang2.0
  • Issues
  • #824

Closed
Open
Opened Apr 09, 2024 by 宋永裕@songyongyu💬
  • Report abuse
  • New issue
Report abuse New issue

[Feat] 可用于魔方例程代码文件合并的方法

import difflib  
  
# 读取两个文件的内容  
with open('main1.c', 'r', encoding='utf-8') as f1, open('main2.c', 'r', encoding='utf-8') as f2:  
    text1 = f1.readlines()  
    text2 = f2.readlines()  
# 使用difflib比较两个文本  
diff = difflib.Differ()  
diff_result = list(diff.compare(text1, text2))  
# 合并差异并写入新文件  
with open('merged_file.c', 'w', encoding='utf-8') as merged_file:  
    for line in diff_result:  
        # 根据difflib的输出格式处理每一行  
        if line.startswith('+'):  
            # '+' 表示只在第二个文件中存在的行,直接写入  
            merged_file.write(line.replace('+', ' '))  
        elif line.startswith('-'):  
            # '-' 表示只在第一个文件中存在的行,也直接写入  
            merged_file.write(line.replace('-', ' '))  
        elif line.startswith('?'):  
            # '?' 表示两个文件中都有的行,但内容不同,需要进一步处理  
            continue
        else:  
            pass
            # 其他情况(包括' '和'?')表示两个文件中都有的行或不确定的行,也写入  
            merged_file.write(line)
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
0
Labels
None
Assign labels
  • View project labels
Reference: fmsh-web-develop/mfang2.0#824