Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 5, 2016 19:07:57

Vlad_Ki
Зарегистрирован: 2016-01-22
Сообщения: 69
Репутация: +  1  -
Профиль   Отправить e-mail  

Не работает os.listdir(".")

Друзья, нуждаюсь в использовании функции os.listdir(“.”).
В интерпретаторе отрабатывается отлично, но как только записываю код в файл и запускаю через консоль, то ничего не происходит. Вывода никакого не следует.
Записываю собственно следующее:

import os
def main():
	list_of_files = [i for i in os.listdir(".") if i.endswith('.lst')]
	print(list_of_files)
main()
Не большой кусочек программы, который должен составлять список фалов с расширением .lst.
Не работает даже это:
import os
print(os.listdir("."))

Расскажите - что не так, люди добрые!
Огромное вам спасибо!



lol developer

Отредактировано Vlad_Ki (Апрель 5, 2016 19:09:22)

Офлайн

#2 Апрель 5, 2016 20:13:55

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Не работает os.listdir(".")

Все так

john_16@linux-laptop:/tmp/1> cat t.py 
import os
d = [i for i in os.listdir('.') if i.endswith('.lst')]
for i in d :
    print(i)
john_16@linux-laptop:/tmp/1> ll
итого 4
-rw-r--r-- 1 john_16 users  0 апр  5 20:10 1.lst
-rw-r--r-- 1 john_16 users  0 апр  5 20:11 foo.bar
-rw-r--r-- 1 john_16 users  0 апр  5 20:11 pep.txt
-rw-r--r-- 1 john_16 users  0 апр  5 20:11 sec.lst
-rw-r--r-- 1 john_16 users 92 апр  5 20:12 t.py
john_16@linux-laptop:/tmp/1> python3 t.py 
1.lst
sec.lst
Вы запуская ваш код учитываете рабочую директорию программы?



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Апрель 5, 2016 21:01:40

Vlad_Ki
Зарегистрирован: 2016-01-22
Сообщения: 69
Репутация: +  1  -
Профиль   Отправить e-mail  

Не работает os.listdir(".")

JOHN_16
Вы запуская ваш код учитываете рабочую директорию программы?

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

Причем, выборочно, не заработала ни одна функция модуля os, которая что - либо возвращает.
Тестил все в формате:
import os
print(os.function())



lol developer

Отредактировано Vlad_Ki (Апрель 5, 2016 21:11:02)

Офлайн

#4 Апрель 5, 2016 21:33:16

Vlad_Ki
Зарегистрирован: 2016-01-22
Сообщения: 69
Репутация: +  1  -
Профиль   Отправить e-mail  

Не работает os.listdir(".")

Пересел за ноут, тут все работает.
ОС на обоих машинах идентичная.
Есть мысли почему так?



lol developer

Офлайн

#5 Апрель 6, 2016 03:29:09

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Не работает os.listdir(".")

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

[guest@localhost t]$ cat t.py 
import os
print(os.listdir("."))
[guest@localhost t]$ python3 t.py
['t.py']
[guest@localhost t]$



Отредактировано py.user.next (Апрель 6, 2016 11:45:58)

Офлайн

#6 Апрель 6, 2016 08:51:24

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Не работает os.listdir(".")

Vlad_Ki
Ну я рассчитываю на то, что программа выведет мне файлы директории, из которой я ее запускаю.
Вот тут вы не правы! Есть текущая директория - в той который вы сейчас находитесь, и запуская программу, которая может находиться в самых разных местах, ей передается системное окружение, в том числе текущая директория.
То что вы хотите делается примерно так:
os.listdir(os.path.dirname(os.path.abspath(__file__)))
где спец переменная __file__ хранит путь до python файла который вызывается на исполнение.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#7 Апрель 6, 2016 09:12:51

Vlad_Ki
Зарегистрирован: 2016-01-22
Сообщения: 69
Репутация: +  1  -
Профиль   Отправить e-mail  

Не работает os.listdir(".")

Огромное спасибо за помощь. Изучу еще раз вопрос с учетом рекомендаций и отпишусь.



lol developer

Офлайн

#8 Апрель 8, 2016 12:27:01

Vlad_Ki
Зарегистрирован: 2016-01-22
Сообщения: 69
Репутация: +  1  -
Профиль   Отправить e-mail  

Не работает os.listdir(".")

У меня чудом все заработало, программу уже дописал. Осталось оптимизировать.
Есть вопрос по Вашему ответу, JOHN_16
Как определяется текущая директория? Эта та директория, которая открыта в консоли?



lol developer

Отредактировано Vlad_Ki (Апрель 8, 2016 12:27:33)

Офлайн

#9 Апрель 8, 2016 19:28:30

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Не работает os.listdir(".")

Vlad_Ki
да. Пускай вы открыли консоль и находитесь в C:\1 , 1 - ваша текущая директория. Пускай ваш prog.py находится в C:\1\2\3\prog.py . Вы можете перейти командой cd в директорию 3 и запустить вашу программу. В этот момент текущая директория это 3, в ней же ваша программа. А еще вы можете находясь в директории 1, используя относительные или абсолютные пути вызвать вашу программу, которая находится в директории 3, программа запустится и для нее текущая директория будет 1, так как в ней вы находились когда ввели команду на запуск программы.
Вообще это основы основ.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#10 Апрель 8, 2016 23:06:13

Vlad_Ki
Зарегистрирован: 2016-01-22
Сообщения: 69
Репутация: +  1  -
Профиль   Отправить e-mail  

Не работает os.listdir(".")

JOHN_16
Понял, спасибо большое.
Просто я всегда запускаю программу из директории в которой она находится. По этому и переспросил.
Не понятно почему у меня не работало ничего. Но все работает и отлично. Эта проблема меня еще найдет и я с ней разберусь более подробно.



lol developer

Отредактировано Vlad_Ki (Апрель 8, 2016 23:09:58)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version