Pycharm сравнить два файла

Обновлено: 05.07.2024

У меня есть два разных файла, и я хочу сравнить их содержимое построчно и записать их общее содержимое в другой файл. Обратите внимание, что оба они содержат пробелы. Вот мой псевдокод:

Тем не менее, благодаря этому я получил много пустых мест в моем FOR файле. Похоже, общие пробелы также написаны. Я хочу написать только текстовую часть. Может кто-нибудь, пожалуйста, помогите мне.

Например: мой первый файл (file1) содержит данные:

В то время как второй файл (file2) содержит данные:

Если вы заметили, что последние две строки каждого файла совпадают, следовательно, я хочу записать этот файл в мой файл FO . Но проблема с моим подходом в том, что он также записывает общее пустое пространство. Должен ли я использовать регулярное выражение для этой проблемы? У меня нет опыта с регулярными выражениями.

Это решение считывает оба файла за один проход, исключает пустые строки и печатает общие строки независимо от их положения в файле:

Если вы специально ищете разницу между двумя файлами, то это может помочь:

Еще один пример .

И если вы хотите удалить обычные пустые строки, просто измените оператор if на:

if line1.strip() and line1 == line2:

.strip() удаляет все начальные и конечные пробелы, поэтому, если это все, что в строке, оно станет пустой строкой "" , которая считается ложной.

Как только объект файла повторяется, он исчерпывается.

Используйте file.seek (или закройте / откройте файл), чтобы перемотать файл:

Если между файлами сохранен порядок, вы также можете предпочесть difflib . Хотя результат Робо является добросовестным стандартом для пересечений, вы, возможно, действительно ищете грубую разницу в стиле:

Тем не менее, это поведение отличается от того, что вы просили (порядок важен), даже если в этом случае выдается тот же результат.

Я только что столкнулся с той же проблемой, но я подумал: «Зачем программировать это на Python, если вы можете решить это простым« grep »?», Что привело к следующему коду Python:

Хитрость за этим заключается в следующем: grep -Fvf file1.txt file2.txt проверяет, присутствуют ли все записи в file2.txt в file1.txt. Делая это в обоих направлениях, мы можем видеть, равны ли содержимое обоих файлов. Я ставлю «равные» между кавычками, потому что при работе таким способом дублирующиеся строки не учитываются.

Очевидно, это всего лишь пример: вы можете заменить grep любым инструментом сравнения файлов командной строки.

This dialog is displayed when you compare two files or two versions of a file (local changes or changes between local files and their revisions in a remote repository). You can compare files of any types, including binaries and .jar files. To open the dialog, select two files to compare or a file to compare its versions and press Ctrl+D .

The differences viewer provides a powerful editor that enables code completion, live templates, and other features.

Diff & Merge viewer

Tooltip and Shortcut

Previous Difference / Next Difference Shift+F7 F7

Jump to the next or previous difference.

When the last or the first difference is reached, PyCharm suggests clicking the arrow buttons or pressing F7 / Shift+F7 once more and comparing other files modified locally. This behavior depends on the Go to the next file after reaching last change option in the Differences Viewer settings.

This behavior is supported only when the Differences Viewer is invoked from the Commit tool window Alt+0 .

Compare Previous/Next File

Compare the local copy of the previous or next file with its update from the server.

These controls are only available if more than one file has been modified locally.

Go To Changed File Ctrl+N

Display all changed files in the current change set and navigate to them. This action is only available when you review changes to multiple files.

Open the selected file in the editor. The caret is placed in the same position as in the Differences Viewer .

Select a viewer mode: side-by-side or unified. The side-by-side mode has two panels, the unified mode has one panel.

You can edit code and perform the Apply , Append , Revert actions in both viewers.

You can change text only in the right-hand part of the side-by-side viewer, or in the lower line in the unified viewer.

You can edit only local versions of your files. You cannot edit files that have read-only status.

Define how the differences viewer should treat whitespaces.

Do not ignore : white spaces are important, and all the differences are highlighted. This option is selected by default.

Trim whitespaces : trim whitespaces if they appear in the end and at the beginning of a line ( ("\t", " ") ).

If two lines differ in trailing whitespaces only, these lines are considered equal.

If two lines are different, trailing whitespaces are not highlighted in the By word mode.

Ignore whitespaces : white spaces are not important, regardless of their location in the source code.

Ignore whitespaces and empty lines : ignores whitespaces and empty lines. The following entities are ignored:

all whitespaces (as in the 'Ignore whitespaces' option)

all added or removed lines consisting of whitespaces only

all changes consisting of splitting or joining lines without changes to non-whitespace parts.

For example, differences between a b c and a \n b c are not highlighted in this mode.

Select the way differences granularity is highlighted.

Highlight words : modified words are highlighted

Highlight lines : modified lines are highlighted

Highlight split changes : if this option is selected, big changes are split into smaller changes.

For example, A \n B and A X \n B X are treated as two changes instead of one.

Highlight symbols : modified symbols are highlighted

Do not highlight : if this option is selected, the differences are not highlighted at all.

Use the Do not highlight option when you work with the files that were significantly modified. In such cases, highlighting might introduce additional difficulties during a review.

Collapse unchanged fragments

Collapse all the unchanged fragments in both files. The amount of non-collapsible unchanged lines is configurable in the Diff & Merge settings page. To open the Diff & Merge page, open settings by pressing Ctrl+Alt+S and navigate to Tools | Diff & Merge .

Click this button to scroll both differences panes simultaneously. If this button is released, each of the panes can be scrolled independently.

Open a list of available settings.

These commands are also available from the context menu of the differences viewer gutter.

Include into commit Alt+I

This checkbox only appears if you invoke the Differences Viewer from the Commit Changes dialog with multiple changed files (all of which are deselected), and you explore the differences between them and hit the last difference in a file.

Select this checkbox if you want to include the file you've reviewed into the commit.

Open a browser and show the corresponding help page.

Switch between the panes of the differences viewer. The active pane has the cursor.

Apply differences between panes (in case of the side-by-side viewer) or between lines (in case of the unified viewer).

The chevron buttons can change their behavior:

Click and to apply changes. This behavior is the default one.

Press Ctrl to change or to or and append changes.

Click this icon to invoke the list of options allowing you to compare different versions of a file to resolve a conflict.

Note that Base refers to the file version that the local and the repository versions originated from (initially displayed in the middle pane), while Middle refers to the resulting version.

Apply All Non-Conflicting Changes

Click this button to apply all non-conflicting changes. You can also make this behavior automatic, by selecting the checkbox Automatically apply non-conflicting changes in the Diff & Merge page of the Settings/Preferences dialog.

Apply Non-Conflicting Changes from the Left/Right Side

Click these buttons to merge non-conflicting changes from the left/right parts of the dialog.

Annotate with GitBlame

This option is only available from the context menu of the gutter.

Use this option to explore who introduced which changes to the repository version of the file, and when. The annotations view lets you see detailed information for each line of code, such as the version from which this line originated, the ID of the user who committed this line, and the commit date.

For more details on annotations, refer to VCS annotations.

Keyboard shortcuts

Use this keyboard shortcut to show the popup menu of the most commonly used diff commands.

Use this keyboard shortcut to switch between the left and the right panes.

Use this keyboard shortcut to undo/redo a merge operation. Conflicts will be kept in sync with the text.

Context menu commands

This context menu is available in the middle of the editor:

Select this check command to show whitespaces as the dots in the Differences Viewer .

Show Line Numbers

Select this check command to show line numbers in the Differences Viewer.

Show Indent Guides

Select this check command to have PyCharm display vertical lines in the Differences Viewer to indicate positions of indents.

Select this check command to have PyCharm wrap the lines of code, when the dialog is resized.

Use this menu item to select the highlighting level in the Differences Viewer. To learn more about the level of highlighting, refer to Change the highlighting level for a file.

Select this check command to annotate the changes.

This command is available only for the files under version control.

This context menu is available in both editors:

Select these commands to accept or append the lines shown in the Differences Viewer.

Compare with Clipboard

Select this command to compare the file in the respective pane of the Differences Viewer with the contents of the Clipboard.

Select this check command to annotate the changes.

This command is available only for the files under version control.

This context menu is available in the right-hand strip of the Differences Viewer:

Go to high-priority problems only/Go to next problem

Click one of these radio-buttons to define the way of navigating between the encountered problems.

Customize highlighting level

Click to show the slider to change the highlighting level in the Differences Viewer.

Show code lens on scrollbar hover

Enables viewing code outside of the visible area of the Differences Viewer when hovering the mouse over the scrollbar.

Productivity tips

Compare two SQL queries

You can compare contents in the clipboard with selected part of an SQL query.

Copy an SQL query to the clipboard.

Select and right-click the query in the editor with which you want to compare the query in the clipboard. Without selecting the query, you compare the clipboard contents with the whole file.

IntelliJ IDEA предлагает множество способов сравнения файлов, папок и фрагментов кода и даже синхронизации содержимого папок.

Сравнение файлов проекта

Допустим, в вашем проекте есть два похожих файла, и вам нужно сравнивать их построчно. С IDEA это очень просто. Просто выберите оба файла в окне вашего проекта (удерживая Ctrl для множественного выбора).

Теперь у вас есть два варианта:

  1. Щелкните правой кнопкой мыши один из файлов и выберите в меню опцию «Compare Files».
  2. Нажмите Ctrl + D

После чего открывается новое окно, которое содержит две панели, в каждой из которых отображается содержимое одого файла. Это очень похоже на diff в системах контроля версий, таких как Git.


Каждое отличие имеет цветовую кодировку:

  • Отсутствие окраски означает, что содержание одинаково
  • Синий означает наличие изменений в той же строке
  • Зеленый означает новый контент
  • Серый означает удаленный контент

Вы можете нажать иконки со стрелками » и «, чтобы применить конкретное изменение из одного файла в другой.

Cравнение работает и для изображений, хотя вы не можете видеть и использовать индивидуальные различия.

Сравнение с файлом вне проекта

Второй пример, когда вам нужно сравнить файл из вашего проекта с другим файлом вне его.

Процесс очень похож на описанный выше. Выберите один файл в окне вашего проекта и:

  1. Щелкните правой кнопкой мыши один из файлов и выберите в меню опцию «Compare With. »
  2. Нажмите Ctrl + D

Последний шаг — поиск внешнего файла для сравнения. Далее сравнение происходит так же, как и в примере выше.

Сравнение с буфером обмена

Возможно, у вас есть файл в вашем проекте, и вам нужно сравнить его с некоторым внешним контентом, который не сохраняется как файл на вашем компьютере. Может быть, это фрагмент кода из Интернета, например, с сайта stackoverflow.

Во-первых, вам нужно открыть файл из вашего проекта в вашем редакторе. Затем скопируйте в буфер обмена фрагмент, который вы хотите сравнить (Ctrl + C).

Теперь у вас есть два варианта. Либо сравните весь файл с буфером обмена, либо сравнить выделенный текст.

  1. Если вы хотите, чтобы весь файл сравнивался, просто щелкните правой кнопкой мыши в любом месте редактора и выберите «Compare with Clipboard» в контекстном меню.
  2. Если вы хотите сравнить только выделенный текст, сначала выберите какой-то фрагмент файла, а затем щелкните правой кнопкой мыши, как и раньше.

Собственное сравнение

Как насчет случая, когда вы хотите сравнить два фрагмента кода из внешних источников? Вы тоже можете это сделать! Просто запустите Find Action с помощью Ctrl + Shift + A и затем найдите опцию Open Blank Diff Window в контекстном меню.

Откроется новое окно сравнения с пустыми обеими панелями, так что вы сможете скопировать и вставить оба фрагмента для сравнения.

Сравнение с предыдущей локальной версией файла

Даже если вы не используете какую-либо систему контроля версий, IDEA хранит исторические версии ваших локальных файлов. Вы можете щелкнуть правой кнопкой мыши в вашем редакторе и выбрать Local history → Show history в контекстном меню.


Здесь вы можете просмотреть более старые версии вашего текущего файла и увидеть разницу между старой и текущей версией и применить любые изменения, если это необходимо.

Сравнить с использованием VCS

Если вы используете систему контроля версий (VCS), у вас есть еще несколько вариантов сравнения. Например, если вы используете Git, вы можете перейти к VCS → Git или щелкнуть правой кнопкой мыши на вашем редакторе и выбрать Git. Теперь вы можете:

  • Сравнить с той же версией репозитория: сравнивает текущий локальный файл с версией в вашем удаленном репозитории
  • Сравнить с веткой: сравнивает локальный файл с тем же файлом в другой ветке
  • Показать историю: сравнивает локальный файл с его предыдущими версиями

Сравнение папок

Сравнение работает не только для отдельных файлов, но и для целых каталогов. Процесс такой же, как и для файлов — просто выберите две папки в окне вашего проекта и нажмите Ctrl + D или щелкните правой кнопкой мыши и выберите Compare Directories в контекстном меню.


Здесь вы можете увидеть список всех файлов, присутствующих в обоих или в одном из каталогов. Вы можете легко определить, какие файлы присутствуют только в одной папке, а какие в обеих. Файлы в обоих папках вы можете сравнить, как обычно.

Синхронизация папок

Инструмент сравнения каталогов полезен не только для выявления различий в обоих каталогах, но и для синхронизации изменений. Вы можете применить изменения для отдельных разделов каждого файла, как обычно. Но вы также можете пометить файлы, присутствующие только в одном из каталогов, для сохранения или синхронизации с другим каталогом. Вы можете изменить желаемое действие для каждого файла в столбце *. Как только вы закончили свой выбор, вы можете нажать либо Synchronize selected, либо Synchronize all для выполения нейобходимой синхронизации.

Мне очень нравится инструмент IntelliJ diff. Мне интересно, можно ли использовать этот инструмент для сравнения двух произвольных файлов. Т.е. файлы НЕ в проекте IntelliJ. Просто выберите два файла в файловой системе и сравните их? Что, если я хочу различать две строки? В моем текстовом редакторе я просто создал два новых документа, вставил текст и различал их, а затем не сохранял файлы, когда закончил. Это возможно?

Нашел эту командную строку:

в MacOSX: (IDEA EAP 11)

В MacOSX он не может работать, когда IDEA (11) открыта.

в Windows: (IDEA EAP 12)

Он работает, даже если IDEA уже открыта.

У меня проблемы при попытке сравнить файлы без расширений (или расширений, которые не совпадают)

Непосредственно из IDEA (EAP 12)

Не все так просто, но работает .

  • Файл> Открыть . > выберите "file1.txt"
  • Файл> Открыть . > выберите "file2.txt"
  • Создайте «Список избранного» и добавьте оба файла в этот список избранного. (для этого: ctrl + щелкните правой кнопкой мыши вкладку имени файла в редакторе> добавить в избранное> выберите только что созданный список избранного - см. снимок экрана)
  • Наконец, откройте представление «Избранное» (Alt + 2 или щелкните по нему слева или в окнах IDEA).
  • Выберите оба файла
  • Щелкните правой кнопкой мыши: «сравнить два файла» (или ctrl + D)

add to favorites

Из терминала вы можете использовать средство запуска идей следующим образом:

По крайней мере, для MacOS (я не уверен в Windows), если вы создали средство запуска из командной строки с помощью «Инструменты -> Создать средство запуска из командной строки . », это так же просто, как следующее:

Обратите внимание, что это работает и с другими приложениями JetBrains; например, используя WebStorm или PyCharm:

В IntelliJ IDEA 2018.2 вы можете открыть пустое средство просмотра различий и вставить любой текст, который хотите сравнить, в его левую и правую панели. Новое действие «Открыть пустое окно просмотра различий» можно найти в диалоговом окне «Найти действие».

С 2018.2 его официально поддерживает IntelliJ :

Для окон: Ctrl + Shift + A, затем введите "Открыть пустое окно различий".

enter image description here

enter image description here

Для Mac: Cmd + Shift + A, затем введите "Открыть пустое окно различий".

enter image description here

enter image description here

Выберите 2 файла на панели Проект и нажмите CTRL + D .

IntelliJ Idea 13 имеет функцию Сравнить с буфером обмена . Эта функция сравнивает текущий открытый файл с версией, которую вы скопировали в буфер обмена. Это отличный и простой способ легко сравнить и объединить два файла. Его также можно использовать для сравнения двух произвольных блоков кода. Не можете понять, почему один блок работает, а другой нет? Воспользуйтесь этой функцией.

Этот параметр доступен в разделе Просмотр> Сравнить с буфером обмена . Я назначил легко запоминающееся сочетание клавиш, чтобы получить быстрый доступ к этой функции.

View > Compare with Clipboard

Просто выберите оба файла в структуре проекта и нажмите:

Windows: ctrl + D

Mac: команда + D

Чтобы сравнить два файла, которых нет в проекте, в IntelliJ IDEA Ultimate 14.1.7 в Windows у меня работает следующее:

  1. Откройте первый файл в среде IDE (либо перетащив его из проводника Windows в окно, либо с помощью File / Open).
  2. В меню просмотра выберите «Сравнить с…»
  3. В появившемся диалоговом окне «Выбор пути» выберите второй файл (либо напрямую, либо путем перетаскивания из проводника Windows в диалоговое окно).

Затем он открывается в традиционной панели сравнения файлов. Если вы попытаетесь отредактировать один из файлов, появится обычный диалог «Вы уверены, что хотите отредактировать файл, которого нет в вашем проекте?», Который можно принять, если это то, что он пытается сделать.

Я нашел еще лучший способ, если вам нужно сравнить открытый файл с любым произвольным файлом в файловой системе:

  • Будьте в редакторе первого файла, скажем A.java.
  • Ctrl + Shift + A, вы увидите:
  • Выберите вторую опцию «Сравнить с . », откроется диалоговое окно «Выбрать путь»:
  • Выберите любой файл на жестком диске и подтвердите его, вы увидите окно сравнения:

Да, можно (конечно, если мы говорим о файлах text ). Но, возможно, вам понадобится создать какой-нибудь проект (просто для открытия там файлов).

Тогда ваши шаги будут такими:

1) Добавьте в созданный проект файл №1 и файл №2.

2) Откройте файл №1 в редакторе.

3) Щелкните правой кнопкой мыши в левом меню (браузер файлов проекта) на файле №2 и найдите пункт меню Compare File with Editor .

Читайте также: