2016-01-07 2 views
2

Что разница между этимиразница между> и >> при создании файла журнала

Python abcd.py > abcd.logs 

и

Python abcd.py >> abcd.logs 

В любом случае, выход программы хранится в файле, имя которого предоставляемый после оператора перенаправления.

+1

Это не имеет ничего делать с python, но с помощью терминала, который вы используете. – RedX

+3

Связано: [В чем разница между «>» и «>>» в команде оболочки?] (Http://askubuntu.com/questions/382793/whats-is-the-difference-between-and-in-shell -command) –

ответ

5

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

+0

Как это отличается для разных оболочек? – crafter

+0

@crafter Это, скорее всего, нет - я никогда не сталкивался с каким-либо другим поведением, насколько я помню, но кто знает, может быть, есть какая-то оболочка, которая ведет себя по-другому? – jpw

1

Если вы используете >:

  • если файл существует: он перепишет файл
  • , если файл не существует: она создаст файл

если вы используете >>:

  • если файл есть: он будет прикреплен к файлу
  • , если файл не существует: он будет создать файл

Однако вы часто можете изменить это поведение по умолчанию. И есть также >|, с которыми вы можете столкнуться в файлах сценариев.

Clobber - Опция

Наиболее распространенное изменение этих правил, как правило, известен как «колошматить» -option.

В Баш вы можете добиться этого с:

set -o noclobber # This will set the noclobber option 
set +o noclobber # This will unset the noclobber option 

В Zsh вы можете добиться этого с:

setopt CLOBBER # This will set the CLOBBER option 
unsetopt CLOBBER # This will unset the CLOBBER option 

Если "затирать" -option установлен (или "NoClobber" - опция снята с охраны), он будет работать так:

Если вы используете > с CLOBBER-вариант:

  • , если файл существует: ошибка
  • , если файл не существует: она создаст файл

если вы используете >> с CLOBBER-вариант:

  • если файл существует : оно будет добавлено в файл
  • , если файл не существует: ошибка

, если вы используете >| с CLOBBER-вариант:

  • , если файл существует: он перепишет файл
  • , если файл не существует: она создаст файл
+0

В командной оболочке Windows и bash (на debian) '>>' не будет выдавать никаких ошибок, если файл не существует, но ведет себя как '>' и создает новый файл. – jpw

+0

Оператор '>>' также создаст файл, если он не существует. Я никогда не наблюдал, чтобы он выдавал ошибку. – ray

+0

Я не думаю, что есть какая-то причина упоминать '> |', тем более, что вы ничего не объяснили о том, что она делает. Я не знал, что вы можете изменить поведение '>' и '>>', у вас есть ссылка на это? –

Смежные вопросы