Как мне изменить каталог (CD) в Python?

Это сильно означает, что ваши данные НЕ НОРМАЛИЗИРОВАНЫ для начала. Вы действительно должны это исправить.

Somteh = такая вещь должна работать (NB вы не упомянули о том, что используете какие-либо другие языки, поэтому ее записывали как хранимую процедуру MySQL)

 create procedure replace_all(find varchar(255), 
        replce varchar(255), 
        indb varcv=char(255))
 DECLARE loopdone INTEGER DEFAULT 0;
 DECLARE currtable varchar(100);
 DECLARE alltables CURSOR FOR SELECT t.tablename, c.column_name 
    FROM information_schema.tables t,
    information_schema.columns c
    WHERE t.table_schema=indb
    AND c.table_schema=indb
    AND t.table_name=c.table_name;

 DECLARE CONTINUE HANDLER FOR NOT FOUND
     SET loopdone = 1;

 OPEN alltables;

 tableloop: LOOP
    FETCH alltables INTO currtable, currcol; 
    IF (loopdone>0) THEN LEAVE LOOP;
    END IF;
         SET stmt=CONCAT('UPDATE ', 
                  indb, '.', currtable, ' SET ',
                  currcol, ' = word_sub(\'', find, 
                  '\','\'', replce, '\') WHERE ',
                  currcol, ' LIKE \'%', find, '%\'');
         PREPARE s1 FROM stmt;
         EXECUTE s1;
         DEALLOCATE PREPARE s1;
     END LOOP;
 END //

Я оставлю это вам, чтобы выяснить, как объявить функцию word_sub - я сделал достаточно свободного программирования здесь.

611
задан kvmahesh 16 May 2018 в 09:17
поделиться

6 ответов

Можно изменить рабочий каталог с:

import os

os.chdir(path)

существует две лучших практики для следования при использовании этого метода:

  1. Выгода исключение (WindowsError, OSError) на недопустимом пути. Если исключение выдается, не выполняйте рекурсивные операции, особенно разрушительные. Они будут воздействовать на старый путь а не новый.
  2. Возврат к Вашему старому каталогу, когда Вы сделаны. Это может быть сделано безопасным от исключения способом путем обертывания вызова chdir в менеджере по контексту, как Brian M. Hunt сделал в его ответ .

Изменение текущего рабочего каталога в подпроцессе не изменяет текущий рабочий каталог в родительском процессе. Это верно для интерпретатора Python также. Вы не можете использовать os.chdir() для изменения CWD обработки вызовов.

680
ответ дан Alan W. Smith 16 May 2018 в 09:17
поделиться

os.chdir() правильный путь.

12
ответ дан Federico A. Ramponi 16 May 2018 в 09:17
поделиться
  • 1
    Среда. GetFolderPath (Среда. SpecialFolder. UserProfile)) + " \Downloads";//мой отказ, извините – Marduk 19 May 2012 в 17:48

Я использовал бы os.chdir как это:

os.chdir("/path/to/change/to")

Между прочим, если необходимо выяснить текущий путь, использование os.getcwd().

[еще 116] здесь

133
ответ дан parik 16 May 2018 в 09:17
поделиться

При использовании относительно новой версии Python можно также использовать менеджера по контексту, такой как этот :

from __future__ import with_statement
from grizzled.os import working_directory

with working_directory(path_to_directory):
    # code in here occurs within the directory

# code here is in the original directory

ОБНОВЛЕНИЕ

, Если Вы предпочитаете самокрутке:

import os
from contextlib import contextmanager

@contextmanager
def working_directory(directory):
    owd = os.getcwd()
    try:
        os.chdir(directory)
        yield directory
    finally:
        os.chdir(owd)
23
ответ дан Brian Clapper 16 May 2018 в 09:17
поделиться

os.chdir() версия Pythonic cd.

12
ответ дан Elliot A. 16 May 2018 в 09:17
поделиться
  • 1
    ожидайте, когда я поместил это в свой код, я получаю ошибку: не Мог найти часть пути ' C:\Users\Hunter\Documents\Visual Studio 2010\Projects\Setup Mover2\Setup Mover2\bin\Debug\UserProfile\Downloads\'. – Hunter Mitchell 19 May 2012 в 16:45

и для легкого интерактивного использования, ipython имеет все общие встроенные команды оболочки.

-5
ответ дан Autoplectic 16 May 2018 в 09:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: