Есть ли & ldquo; cd & rdquo; переменная среды в Python? [Дубликат]

Понимание доступных синтаксисов функций стрелок даст вам представление о том, какое поведение они представляют, когда «прикован», как в приведенных вами примерах.

Когда функция стрелки записывается без блочных фигурных скобок, с или без нескольких параметров, выражение, которое составляет тело функции, является неявным возвращенным. В вашем примере это выражение является другой функцией стрелки.

No arrow funcs              Implicitly return `e=>{…}`    Explicitly return `e=>{…}` 
---------------------------------------------------------------------------------
function (field) {         |  field => e => {            |  field => {
  return function (e) {    |                             |    return e => {
      e.preventDefault()   |    e.preventDefault()       |      e.preventDefault()
  }                        |                             |    }
}                          |  }                          |  }

Еще одно преимущество написания анонимных функций с использованием синтаксиса стрелок состоит в том, что они связаны лексически с областью, в которой они определены. Из «Функции стрелок» на MDN :

Выражение функции стрелки имеет более короткий синтаксис по сравнению с функциональными выражениями и лексически связывает это значение . Функции стрелки всегда анонимные .

Это особенно уместно в вашем примере, учитывая, что оно берется из приложения . Как указано в @naomik, в React вы часто обращаетесь к функциям члена компонента , используя this. Например:

Unbound                     Explicitly bound            Implicitly bound 
------------------------------------------------------------------------------
function (field) {         |  function (field) {       |  field => e => {
  return function (e) {    |    return function (e) {  |    
      this.setState(...)   |      this.setState(...)   |    this.setState(...)
  }                        |    }.bind(this)           |    
}                          |  }.bind(this)             |  }

149
задан astay13 23 November 2011 в 22:06
поделиться

6 ответов

Вы можете использовать модуль os.

>>> import os
>>> os.getcwd()
'/home/user'
>>> os.chdir("/tmp/")
>>> os.getcwd()
'/tmp'

Но если речь идет о поиске других модулей: вы можете установить переменную среды, называемую PYTHONPATH, под Linux будет как

export PYTHONPATH=/path/to/my/library:$PYTHONPATH

Затем интерпретатор также ищет это место для модулей import ed.

edit

В Windows:

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

(снято из http://docs.python.org/using/windows.html )

edit 2

... и даже лучше: используйте virtualenv и virtualenv_wrapper, это позволит вам создать среду разработки, в которой вы можете добавлять пути к модулю по своему усмотрению (add2virtualenv) без загрязнения вашей установки или «нормальной» рабочей среды.

http://virtualenvwrapper.readthedocs.org/en/latest/command_ref.html

213
ответ дан wal-o-mat 18 August 2018 в 13:22
поделиться
  • 1
    вы правы, чтобы изменить свой вопрос, чтобы добавить предложение о PYTHONPATH, но обратите внимание, что OP указывает Windows ... – simon 23 November 2011 в 22:13
  • 2
    И в чем проблема с PYTHONPATH под Windows? Но я исправил свой ответ. – wal-o-mat 23 November 2011 в 22:16
  • 3
    Должен ли я устанавливать PYTHONPATH в командной строке Windows или в оболочке Python? – astay13 23 November 2011 в 22:17
  • 4
    @ astray13: У вас также есть возможность игнорировать переменную окружения и вместо этого добавлять к sys.path внутри вашего скрипта. – Steven Rumbalski 23 November 2011 в 22:31
  • 5
    @ astay13: не устанавливайте PYTHONPATH глобально, если у вас установлено более одного Python (или у вас установлены программы, связывающие Python с ними - другими словами, вы никогда не узнаете): он может нарушить установку в таинственные способы – jfs 22 April 2014 в 05:21

Если вы import os, вы можете использовать os.getcwd для получения текущего рабочего каталога, и вы можете использовать os.chdir для изменения своего каталога

4
ответ дан deontologician 18 August 2018 в 13:22
поделиться

Самый простой способ изменить текущий рабочий каталог на python - использовать пакет «os». Ниже приведен пример для компьютера Windows:

#import the os package
import os
# Confirm the current working directory 
os.getcwd()
# use '\\' while chaning the directory 
os.chdir("C:\\user\\foldername")
1
ответ дан sambeet 18 August 2018 в 13:22
поделиться
  • 1
    Как это отличается от принятого ответа? – Iceman 7 June 2017 в 08:43
  • 2
    использование "\\" и уточнение о компьютере Windows. Но я согласен, что принятый ответ более наглядный. – sambeet 14 June 2017 в 12:00

вы хотите

import os
os.getcwd()
os.chdir('..')
12
ответ дан simon 18 August 2018 в 13:22
поделиться
  • 1
    os.chdir ('C: \ Users \ Ajeya \ Documents \') ^ СинтаксисError: EOL во время сканирования строкового литерала – AAI 4 September 2016 в 00:31
  • 2
    @ В любом случае вам нужно удвоить обратную косую черту, если вы используете их в обычной (не сырой) строке Python. Python также позволяет использовать косые черты вместо этого. Таким образом, либо os.chdir('C:/Users/Ajeya/Documents'), либо os.chdir('C:\\Users\\Ajeya\\Documents'), либо os.chdir(r'C:\Users\Ajeya\Documents'). – Charles Duffy 13 October 2017 в 19:31
  • 3
    Было бы неплохо отметить, что вы вызываете os.getcwd() только для целей отладки, чтобы мы могли видеть, что представляет собой рабочий каталог, прежде чем мы его изменим. Код для фактического изменения cwd - это просто os.chdir('..') – Toothpick Anemone 21 March 2018 в 22:18

Изменение текущего каталога не является способом поиска модулей в Python.

Скорее, см. документы для Путь поиска модуля для того, как Python находит, какой модуль import.

Вот соответствующий бит из секции Standard Modules :

Переменная sys.path представляет собой список строк, который определяет интерпретатор путь поиска для модулей. Он инициализируется путём по умолчанию, взятым из переменной окружения PYTHONPATH или из встроенного значения по умолчанию, если PYTHONPATH не установлен. Вы можете изменить его, используя стандартные операции с списком: >>> import sys >>> sys.path.append('/ufs/guido/lib/python')

В ответ на ваш исходный вопрос о получении и настройке текущего каталога:

>>> help(os.getcwd)

getcwd(...)
    getcwd() -> path

    Return a string representing the current working directory.

>>> help(os.chdir)

chdir(...)
    chdir(path)

    Change the current working directory to the specified path.
4
ответ дан Steven Rumbalski 18 August 2018 в 13:22
поделиться
>>> import os
>>> os.system('cd c:\mydir')

На самом деле, os.system() может выполнить любую команду, которую может выполнить команда Windows, а не только изменить каталог.

7
ответ дан Tim Cooper 18 August 2018 в 13:22
поделиться
  • 1
    Файл & quot; & lt; stdin & gt ;, строка 1 os.system ('cd c: \ Users \ Ajeya \ Documents \') ^ СинтаксисError: EOL во время сканирования строкового литерала – AAI 4 September 2016 в 00:32
Другие вопросы по тегам:

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