crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V  < 1 2 3 >  
Ответить в данную темуНачать новую тему
> Ошибки при работе с файлами и каталогами, Python
lanz
  опции профиля:
сообщение 20.3.2013, 13:15
Сообщение #11


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


В функцию заполнения тоже нужно добавить
global NF
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zuze
  опции профиля:
сообщение 20.3.2013, 13:28
Сообщение #12


Участник
**

Группа: Участник
Сообщений: 211
Регистрация: 4.11.2012
Пользователь №: 3589

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(lanz @ 20.3.2013, 13:15) *
В функцию заполнения тоже нужно добавить
global NF


Большое спасибо! Заработало.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zuze
  опции профиля:
сообщение 20.3.2013, 15:38
Сообщение #13


Участник
**

Группа: Участник
Сообщений: 211
Регистрация: 4.11.2012
Пользователь №: 3589

Спасибо сказали: 0 раз(а)




Репутация:   0  


Я хочу сметить текущую директорию.
Делаю так:
# Глобально делаю
dir = os.path.join(os.getcwd(), "file") # Выбор текущей директории с файлами

# В функции
global dir
os.chdir(dir)


А в результате когда я делаю

print os.chdir(dir)


Выводится: None

Когда я делаю

print dir


Выводится всё правильно: D:\PythonProject\l\file

Пробовал сделать, так

os.chdir(r"D:\PythonProject\l\file")


Тоже выводится: None

Почемуже, так происходит?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 20.3.2013, 16:06
Сообщение #14


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Как я понимаю os.chdir не позвращает ничего, ибо зачем? Ты же и так знаешь на что меняешь, а если что-то будет не так она кинет исключение вроде: WindowsError
Если ты хочешь посмотреть текущую директорию после os.chdir используй os.getcwd.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zuze
  опции профиля:
сообщение 20.3.2013, 16:16
Сообщение #15


Участник
**

Группа: Участник
Сообщений: 211
Регистрация: 4.11.2012
Пользователь №: 3589

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ViGOur @ 20.3.2013, 16:06) *
Как я понимаю os.chdir не позвращает ничего, ибо зачем?


Я засомневался из-за того, что следующий код который после откоытия файла написан срабатывает. Что странно, так как и пут текущий должен быть правильный и имя файла верное.

if IOError:
   print "Cannot open file read!"


Может код для проверки открылся ли файл, нужно было другой какой-то писать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 20.3.2013, 16:33
Сообщение #16


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Конечно он срабатывает, ибо данный код:
if IOError:
   print "Cannot open file read!"
переводится как: если тип IOError не равен None (а он не равен), напечатать "Cannot open file read" :)

ты лучше скажи чего хочешь, а еще лучше почитай книжку по Python не будет лишней... ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zuze
  опции профиля:
сообщение 21.3.2013, 9:15
Сообщение #17


Участник
**

Группа: Участник
Сообщений: 211
Регистрация: 4.11.2012
Пользователь №: 3589

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ViGOur @ 20.3.2013, 16:33) *
а еще лучше почитай книжку по Python не будет лишней...


Поправил, тепрерь всё впорядке:

os.chdir(dir)
try:
    fp = open(NF[frame], 'rb')
except IOError:
    print "Cannot open file read!"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zuze
  опции профиля:
сообщение 21.3.2013, 14:55
Сообщение #18


Участник
**

Группа: Участник
Сообщений: 211
Регистрация: 4.11.2012
Пользователь №: 3589

Спасибо сказали: 0 раз(а)




Репутация:   0  


Хотел сделать присвоение двухмерному массива двоичного файла по байтно.
Пробовал, как я делал на Си, вот так:

# Глобальная переменная
bf = []

global bf
for j in range(0, 720, 1):
     for i in range(491, 0, -1):
          bf[i][j] = fp.read(1)


Но, выскакивает ошибка: IndexError: list index out of range
Как же это поправить?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 21.3.2013, 15:20
Сообщение #19


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


for j in range(0, 720, 1):
     bf.append ([]);
     for i in range(491, 0, -1):
          bf[j].append(fp.read(1))


Все же советую использовать что нибудь из следующего:
http://docs.python.org/2/library/array.html - одномерные массивы.
http://www.numpy.org/ - многомерные массивы и полезные функции.
http://www.pythonware.com/products/pil/ - для работы с изображениями.

Кстати, никто не знает альтернативу PIL(что сейчас модно :lol:)? Печалит последний релиз четырехлетней давности.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zuze
  опции профиля:
сообщение 21.3.2013, 15:55
Сообщение #20


Участник
**

Группа: Участник
Сообщений: 211
Регистрация: 4.11.2012
Пользователь №: 3589

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(lanz @ 21.3.2013, 15:20) *
for j in range(0, 720, 1):
    bf.append([])
      for i in range(491, 0, -1):
          bf[j].append(fp.read(1))


Этот строчку кода, когда я делаю во вложенном цикле её

print bf[j]


Выводится почему-то только первое значение, я так понял это из-за того что j не меняеться, но почему оно не меняеться в циклах оно же меняется?

Сообщение отредактировал zuze - 21.3.2013, 15:57
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V  < 1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 14.11.2024, 7:38