2012-06-21 3 views
1

Я пытаюсь удалить файлы. Я проверяю дату и удаляю, если она старше меня. Я заметил, что один .zip-файл не удалялся. Он был только для чтения, поэтому в небольшом тестовом коде я использовал os.chmod (путь, stat.S_IWRITE), а затем os.remove (path), и он сработал. Я поместил этот код в свой основной код и получил ошибку. Я импортирую модуль os и stat в обоих.AttributeError: объект 'nt.stat_result' не имеет атрибута 'S_IWRITE'

Ниже тестовый код, который работает, но когда я это в большей код, который я получил ошибку и полный код это просто четкости, а также:

AttributeError: «nt.stat_result» объект имеет no attribute 'S_IWRITE'

Я проверил, что dpath и dayscount проходят путь и количество дней.

import os, stat 

def del_file(dpath, dayscount): 
    if dayscount > 10: 
     if dpath[-4:]== ".zip": 
      os.chmod(dpath,stat.S_IWRITE) 
      os.remove(dpath) 
     else: 
      os.remove(dpath) 
    else: 
     print "File is Good" 

dpath = "C:\Workspace\Test_Data.zip" 
dayscount = 15 
del_file(dpath, dayscount) 

После прочтения здесь я нашел ссылку: Code on this page, который показал некоторые примеры импортирующих модулей. Ответ сказал, чтобы импортировать модуль в функцию. Я пробовал это по моему основному коду, и это сработало.

Основной код импортирует os и stat в верхней части кода, но эта функция, похоже, не видит его. И я не знаю, почему. Когда я импортирую его в модуль, он видит его. Поэтому, когда в основной код мне пришлось добавить импорт в модуль, см. Ниже.

import os, stat 

def test_date(): 
Code for this function 

def get_month(): 
Code for this function 

def del_file(dpath, dayscount): 
    import os, stat 
    print dpath 
    print dayscount 
    if dayscount > 10: 
     if dpath[-4:]== ".zip": 
      os.chmod(dpath,stat.S_IWRITE) 
      #os.remove(dpath) 
     else: 
      os.remove(dpath) 
    else: 
     print "File is Good" 

dpath = "C:\Workspace\Test_Data.zip" 
dayscount = 13 
del_file(dpath, dayscount) 

ответ

1

Вы устанавливаете переменную с именем stat где-то в коде (в результате os.stat вызова). Эта переменная затмевает модуль статистики.

Поиск stat = и переименование переменной на другое имя, например stat_result.

+0

Это было, у меня был stat как переменная где-то в другом месте, измените его, и он работает без необходимости импортировать его снова. Благодарю. – user1015375

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