Уведомления

Группа в Telegram: @pythonsu

#1 Июль 1, 2013 10:31:27

el_gato_de_ch
Зарегистрирован: 2013-07-01
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись в файл

Всем привет.

есть вот такой скрипт

import sys
import os.path
if __name__ == "__main__":
	sys.stderr=open('train.txt', 'w+')
	#f = open("train1.txt", "w+")
	if len(sys.argv) != 2 :
		print ("usage: create_csv <base_path>")
		sys.exit(1)
	
	#f.write("Hello world")
	
	BASE_PATH = sys.argv[1]
	SEPARATOR = ";"
	
	label = 0
	
	for dirname, dirnames, filenames in os.walk(BASE_PATH) :
		for subdirname in dirnames :
			subject_path = os.path.join(dirname, subdirname)
			for filename in os.listdir(subject_path) :
				abs_path = "%s/%s" % (subject_path, filename)
#				f.write("%s%s%d" % (abs_path, SEPARATOR, label))
				print ("%s%s%d" % (abs_path, SEPARATOR, label))
			++label
	print (os.path.dirname(__file__))
	
	#f.close()
суть в том, что всё что выводится в консоль, должно выводиться в файл.
Вывод в консоль работает корректно.
Однако, при попытке работы с файлом случается что-то непредвиденное, файл просто не создаётся.
Прежде чем писать этот пост, я попробовал :
- делать через f = open(“filename”, “w”) - РЕЗУЛЬТАТ: после выполнения скрипта, файл отсутствует
- перенаправлять поток sys.stderr=open('train.txt', ‘w+’) - РЕЗУЛЬТАТ: same as previous

Я использую python3.3, для выполнения скрипта - консоль cmd.exe, Интересный факт, что если консоль запущена без прав админа, то скрипт выдаёт permition denied, при попытке доступа к файлу, OS Win7

Сам я в python уже несколько часов ( 5 если быть точным, до этого дел не имел) поэтому прошу помощи у более продвинутых товарищей.

Офлайн

#2 Июль 1, 2013 10:39:36

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Запись в файл

++label

А когда в питоне появился такой оператор?



Офлайн

#3 Июль 1, 2013 10:42:16

el_gato_de_ch
Зарегистрирован: 2013-07-01
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись в файл

даже после замены на label = label + 1
файл всё равно не создаётся

UPD.

даже после замены stderr на stdout результат - файла нет,
UPD1

Интересный факт, что если запустить поиск файлов и указать train.txt, то находится ярлык, на этот файл, но пишут, что файл был удалён, ярлык ссылается на файл который был создан в папке со скриптом

Отредактировано el_gato_de_ch (Июль 1, 2013 10:50:10)

Офлайн

#4 Июль 1, 2013 10:50:21

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Запись в файл

Вот так создается?

if __name__ == "__main__":
    f = open("train1.txt", "w+")
    f.write("Hello world")



Офлайн

#5 Июль 1, 2013 10:56:56

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Запись в файл

import sys
import os.path
if __name__ == "__main__":
	sys.stdout=open('train.txt', 'w+')
	if len(sys.argv) != 2 :
		print ("usage: create_csv <base_path>")
		sys.exit(1)
	
	BASE_PATH = sys.argv[1]
	SEPARATOR = ";"
	
	label = 0
	
	for dirname, dirnames, filenames in os.walk(BASE_PATH) :
		for subdirname in dirnames :
			subject_path = os.path.join(dirname, subdirname)
			for filename in os.listdir(subject_path) :
				abs_path = "%s/%s" % (subject_path, filename)
				print ("%s%s%d" % (abs_path, SEPARATOR, label))
			label += 1
	print (os.path.dirname(__file__))
Вот это у меня отработало, хоть и извращение.

Офлайн

#6 Июль 1, 2013 10:58:58

el_gato_de_ch
Зарегистрирован: 2013-07-01
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись в файл

неа
только, я ещё файл закрываю в конце f.close()

UPD. Удалил строчку f.close() скрипт работает, файла нет,

Отредактировано el_gato_de_ch (Июль 1, 2013 11:00:07)

Офлайн

#7 Июль 1, 2013 11:00:03

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Запись в файл

>>> a = 1
>>> ++a
1
>>> +++a
1
>>> +++++++++++a
1
>>> -a
-1
>>> --------a
1
>>> ---a
-1
>>> 

Офлайн

#8 Июль 1, 2013 11:02:39

el_gato_de_ch
Зарегистрирован: 2013-07-01
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись в файл

Shaman
Нифига скрипт не работает, может быть

Офлайн

#9 Июль 1, 2013 11:10:12

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Запись в файл

import sys
import os.path
if __name__ == "__main__":
	f=open('train.txt', 'w+')
	if len(sys.argv) != 2 :
		print("usage: create_csv <base_path>")
		sys.exit(1)
	
	BASE_PATH = sys.argv[1]
	SEPARATOR = ";"
	
	label = 0
	
	for dirname, dirnames, filenames in os.walk(BASE_PATH) :
		for subdirname in dirnames :
			subject_path = os.path.join(dirname, subdirname)
			for filename in os.listdir(subject_path) :
				abs_path = "%s/%s" % (subject_path, filename)
				print ("%s%s%d" % (abs_path, SEPARATOR, label), file=f)
			label += 1
	print(os.path.dirname(__file__), file=f)
	f.close()
Так более причесанно.
el_gato_de_ch, там у вас что-то системное.

Офлайн

#10 Июль 1, 2013 11:10:13

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Запись в файл

el_gato_de_ch
неа
только, я ещё файл закрываю в конце f.close()
UPD. Удалил строчку f.close() скрипт работает, файла нет,
странно, а ты файл где ищешь?



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version