<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 練習 29:`diff`和`patch` > 原文:[Exercise 29: diff and patch](https://learncodethehardway.org/more-python-book/ex29.html) > 譯者:[飛龍](https://github.com/wizardforcel) > 協議:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/) > 自豪地采用[谷歌翻譯](https://translate.google.cn/) 為了完成第四部分,你將簡單把你所學習的完整的 TDD 流程,應用于你可能不熟悉的、更相關的項目。請參閱練習 28 來確認你了解該流程,并確保你嚴格遵循它。如果必須的話,創建一個檢查列表。 > 警告 > 當你實際工作時,這個嚴格的流程完全沒有用。目前,你正在研究該流程,并將其內在化,以便你可以在現實世界中使用它。這就是為什么我讓你嚴格遵循它。這只是練習,所以當你做真正的工作時,不要成為一個狂熱者。這本書的目的是,教你一套完成工作的策略,而不是教你一個可以傳播給大眾的宗教儀式。 ## 挑戰練習 `diff`命令接受兩個文件并產生第三個文件(或輸出),它包含第一個文件與第二個文件相比,修改的東西。它是`git`和其它版本控制工具的基礎。在 Python 中實現`diff`是相當簡單,因為有一個庫可以為你做這件事,所以你不需要處理算法(這可能非常復雜)。 `patch `工具是`diff`工具的伙伴,因為它需要一個差異文件,并將其應用到另一個文件,來產生第三個文件。這可以讓你選取在兩個文件中的更改,運行`diff`來僅僅生成差異,然后將該`.diff`文件發送給某人。那個人可以使用他們的原始文件副本和`.diff`,使用`patch`來重建你的更改。 以下是一個工作流程示例,來演示`diff`和`patch`的工作原理。我有兩個文件`A.txt`和`B.txt`。`A.txt文件包含一些簡單的文字,然后我復制它,并創建`B.txt`,帶有一些修改: ``` $ diff A.txt B.txt > AB.diff $ cat AB.diff 2,4c2,4 < her fleece was white a mud < and every where that marry < her lamb would chew cud --- > her fleece was white a snow > and every where that marry went > her lamb was sure to go ``` 這產生了文件`AB.diff`,它擁有`A.txt`與`B.txt`相比的變化,你可以看到這是在修復我打破的押韻。一旦你有了`AB.diff`,你可以使用補丁應用更改: ``` $ patch A.txt AB.diff $ diff A.txt B.txt ``` 最后的命令應該不顯示認識輸出,因為之前的`patch`命令使`A.txt`與`B.txt`具有相同的內容。 這兩個東西的實現,應該從`diff`命令開始,因為使用 Python 來作弊,你有完全實現的`diff`。你可以在`difflib`文檔的末尾找到它,但嘗試實現你的版本,并看看與之相比怎么樣。 這個練習的真正要點就是`patch`工具,Python 沒有為你實現它。你將要閱讀`difflib`中的`SequenceMatcher`類,并特別查看`SequenceMatch.get_opcodes`函數。這是你`patch`工作的唯一線索,但這是一個非常好的線索。 ## 研究性學習 你能把這種`diff`和`patch`的組合做到什么程度?你可以將它們組合成一個工具嗎?你可以讓他們像微型的`git`那樣工作嗎? ## 深入學習 找到盡可能多的差異比較算法。另一件需要研究的事情是`git`的工作方式。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看