Я использую следующий сценарий, чтобы добавить право копирования ко всем файлам в каталогах и подкаталогах для заданного каталога, переданного в качестве первого аргумента. Я запускаю сценарий следующим образом, но сталкиваюсь с ошибкой ниже...
Может ли кто-нибудь предоставить информацию о том, как это исправить?
ОШИБКА: -
C:\Dropbox\copyrights>python Add_copyright.py .
Traceback (most recent call last):
File "Add_copyright.py", line 69, in
prepend_file(fullname, dirpath)
File "Add_copyright.py", line 60, in prepend_file
os.rename(temp_fname, fullname)
WindowsError: [Error 183] Cannot create a file when that file already exists
КОД:-
import fnmatch
import os
import shutil
import sys
import tempfile
file_patterns_to_match = ['*.c','*.h','*.cpp','*.txt']
headertext = """/*
* Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all
* copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
"""
# make any newlines in headertext match the system line ending
headertext = headertext.replace('\n', os.linesep)
def want_this_file(fname):
for pat in file_patterns_to_match:
if fnmatch.fnmatch(fname, pat):
return True
return False
def prepend_file(fullname, path):
# with statement means temp file is written and closed at end of with
with tempfile.NamedTemporaryFile(dir=path, delete=False) as out_file:
# get the name immediately
temp_fname = out_file.name
try:
# use binary mode to avoid newline translations
with open(fullname, "rb") as in_file:
out_file.write(headertext)
shutil.copyfileobj(in_file, out_file)
except Exception:
# on any error, clean up temp file and re-raise exception
try:
os.remove(temp_fname)
except Exception:
print("unable to clean up temp file: " + temp_fname)
pass
raise
# rename temp file to fullname, clobbering original
os.rename(temp_fname, fullname)
start_directory = sys.argv[1]
for dirpath, dirnames, filenames in os.walk(start_directory):
for fname in filenames:
if want_this_file(fname):
fullname = os.path.join(dirpath, fname)
prepend_file(fullname, dirpath)
Подробнее здесь: https://stackoverflow.com/questions/194 ... ady-exists
Ошибка Windows: [Ошибка 183] Невозможно создать файл, если этот файл уже существует. ⇐ Python
Программы на Python
1767264326
Anonymous
Я использую следующий сценарий, чтобы добавить право копирования ко всем файлам в каталогах и подкаталогах для заданного каталога, переданного в качестве первого аргумента. Я запускаю сценарий следующим образом, но сталкиваюсь с ошибкой ниже...
Может ли кто-нибудь предоставить информацию о том, как это исправить?
ОШИБКА: -
C:\Dropbox\copyrights>python Add_copyright.py .
Traceback (most recent call last):
File "Add_copyright.py", line 69, in
prepend_file(fullname, dirpath)
File "Add_copyright.py", line 60, in prepend_file
os.rename(temp_fname, fullname)
WindowsError: [Error 183] Cannot create a file when that file already exists
КОД:-
import fnmatch
import os
import shutil
import sys
import tempfile
file_patterns_to_match = ['*.c','*.h','*.cpp','*.txt']
headertext = """/*
* Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all
* copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
"""
# make any newlines in headertext match the system line ending
headertext = headertext.replace('\n', os.linesep)
def want_this_file(fname):
for pat in file_patterns_to_match:
if fnmatch.fnmatch(fname, pat):
return True
return False
def prepend_file(fullname, path):
# with statement means temp file is written and closed at end of with
with tempfile.NamedTemporaryFile(dir=path, delete=False) as out_file:
# get the name immediately
temp_fname = out_file.name
try:
# use binary mode to avoid newline translations
with open(fullname, "rb") as in_file:
out_file.write(headertext)
shutil.copyfileobj(in_file, out_file)
except Exception:
# on any error, clean up temp file and re-raise exception
try:
os.remove(temp_fname)
except Exception:
print("unable to clean up temp file: " + temp_fname)
pass
raise
# rename temp file to fullname, clobbering original
os.rename(temp_fname, fullname)
start_directory = sys.argv[1]
for dirpath, dirnames, filenames in os.walk(start_directory):
for fname in filenames:
if want_this_file(fname):
fullname = os.path.join(dirpath, fname)
prepend_file(fullname, dirpath)
Подробнее здесь: [url]https://stackoverflow.com/questions/19416456/windowserror-error-183-cannot-create-a-file-when-that-file-already-exists[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия