Команда linux с использованием python до go в указанной папке c - PullRequest
0 голосов
/ 04 марта 2020

Привет всем: у меня есть только одна папка в моем текущем каталоге, и я хочу go, запустив "cd $ (ls)". Поэтому я пишу этот код

import os
os.system("cd $(ls)")

Но у меня это не сработало. Любой может помочь записать синтаксис python в go в единственной доступной папке. PS: имя папки изменяемое, поэтому я хочу использовать "cd $ (ls)"

Ответы [ 3 ]

2 голосов
/ 04 марта 2020

Модуль ОС имеет несколько служебных функций для достижения того, что вы хотите сделать.

  • os.listdir(): вернуть список со всеми файлами / каталогами в текущем рабочем каталоге
  • os.chdir(path): изменяет ваш рабочий каталог

Таким образом, вы можете применить их так:

os.chdir(os.listdir()[0])
1 голос
/ 04 марта 2020

Не очевидно, если под «go» вы подразумеваете «изменить текущий каталог для оставшейся части кода скрипта» или «изменить каталог на после выхода из скрипта». Если позже, вы не сможете это сделать - os.system запускает подоболочку, а изменения текущего каталога в подоболочке не передаются в родительскую оболочку. Если первое, вы должны просто использовать:

import glob, os
os.chdir(glob.glob('*')[0])
0 голосов
/ 04 марта 2020

Вместо этого используйте:

os.chdir(os.listdir('.')[0])

Хотя os.system("cd %(ls)) правильно работает в вашей оболочке, оно не изменит текущий рабочий каталог вашего работающего интерпретатора python, потому что os.system() использует отдельный экземпляр оболочки, который будет уничтожен непосредственно после выполнения команды оболочки cd.

Двойная проверка путем выполнения os.getcwd() до и после (os.getcwd() возвращает текущий рабочий каталог вашего python переводчик).

...