2015-10-07 2 views
0

У меня есть сценарий, который работает (вроде), но только тогда, когда бежал, когда вы в настоящее время в пути каталогаPython скрипт работает только при запуске из каталога

directoryChosen = sys.argv[1] 




for f in os.listdir(directoryChosen): 
    fname, fext = os.path.splitext(f) 
    if not f.startswith('.'): 
     print f 

     print fname + " Is fname" 
     dest_path = fname 
     print dest_path + " is dest path" 
     print fname + "this is fname" 
     if os.path.isdir(fname): 
      print "Ended here/ Start work here" 
      shutil.copy2(directoryChosen + '/' + f, dest_path) 
     if not os.path.isdir(fname): 
      print "working here kind of..lets make directories" 

      os.mkdir(dest_path) 
      print " Path is created" 

      shutil.copy2(directoryChosen + f, dest_path) 

Работа Если я бег

python /Users/eeamesX/PycharmProjects/Workmain/groupFiles.py continuous/ 

2015-06-01#e3cea6c4-07f2-4b84-985d-5ecabae9a6dd.csv 
2015-06-01#e3cea6c4-07f2-4b84-985d-5ecabae9a6dd Is fname 
2015-06-01#e3cea6c4-07f2-4b84-985d-5ecabae9a6dd is dest path 
2015-06-01#e3cea6c4-07f2-4b84-985d-5ecabae9a6ddthis is fname 
working here kind of..lets make directories 
Path is created 
2015-06-01#e3cea6c4-07f2-4b84-985d-5ecabae9a6dd.wav 
2015-06-01#e3cea6c4-07f2-4b84-985d-5ecabae9a6dd Is fname 
2015-06-01#e3cea6c4-07f2-4b84-985d-5ecabae9a6dd is dest path 
2015-06-01#e3cea6c4-07f2-4b84-985d-5ecabae9a6ddthis is fname 
Ended here/ Start work here 
2015-06-01#e3cea6c4-07f2-4b84-985d-5ecabae9a6dd.xml 
2015-06-01#e3cea6c4-07f2-4b84-985d-5ecabae9a6dd Is fname 
2015-06-01#e3cea6c4-07f2-4b84-985d-5ecabae9a6dd is dest path 
2015-06-01#e3cea6c4-07f2-4b84-985d-5ecabae9a6ddthis is fname 
Ended here/ Start work here 

не работает

питон groupFiles.py/Users/eeam ESX/работа/данные/ГЕРМАНИЯ/DE_026/непрерывная/

2015-06-01#e3cea6c4-07f2-4b84-985d-5ecabae9a6dd.csv 
2015-06-01#e3cea6c4-07f2-4b84-985d-5ecabae9a6dd Is fname 
2015-06-01#e3cea6c4-07f2-4b84-985d-5ecabae9a6dd is dest path 
2015-06-01#e3cea6c4-07f2-4b84-985d-5ecabae9a6ddthis is fname 
Ended here/ Start work here 
2015-06-01#e3cea6c4-07f2-4b84-985d-5ecabae9a6dd.wav 
2015-06-01#e3cea6c4-07f2-4b84-985d-5ecabae9a6dd Is fname 
2015-06-01#e3cea6c4-07f2-4b84-985d-5ecabae9a6dd is dest path 
2015-06-01#e3cea6c4-07f2-4b84-985d-5ecabae9a6ddthis is fname 
Ended here/ Start work here 
2015-06-01#e3cea6c4-07f2-4b84-985d-5ecabae9a6dd.xml 
2015-06-01#e3cea6c4-07f2-4b84-985d-5ecabae9a6dd Is fname 
2015-06-01#e3cea6c4-07f2-4b84-985d-5ecabae9a6dd is dest path 
2015-06-01#e3cea6c4-07f2-4b84-985d-5ecabae9a6ddthis is fname 
Ended here/ Start work here 
grouped the files boss 

Я хочу, чтобы создать каталог, если он будет работать в обоих направлениях! Любая помощь?

+0

Можете ли вы написать новый скрипт с двумя или тремя строками, который также проявляет ту же проблему? См. [** 'mcve' **] (http://stackoverflow.com/help/mcve) –

ответ

3

Имена, возвращаемые os.listdir, не включают префикс каталога. Поэтому каждая функция, которая принимает имя файла, требует, чтобы вы конкатенировали каталог с именем. Например.

if os.path.isdir(directoryChosen + '/' + fname): 
     print "Ended here/ Start work here" 
     shutil.copy2(directoryChosen + '/' + f, directoryChosen + '/' + dest_path) 
+0

Спасибо человеку! Вопрос Noob, который я знаю. Но потратил много времени на это – Anekdotin

+0

Эй, это сделать исполняемый файл, а не папку? Вы когда-нибудь видели это? – Anekdotin

+0

Вы имеете в виду 'os.mkdir()' создает файл вместо папки? Я сомневаюсь в этом. – Barmar

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