จะทราบ / เปลี่ยนไดเรกทอรีปัจจุบันใน Python shell ได้อย่างไร?


219

ฉันใช้ Python 3.2 บน Windows 7 เมื่อฉันเปิด Python shell ฉันจะรู้ได้อย่างไรว่าไดเรกทอรีปัจจุบันคืออะไรและฉันจะเปลี่ยนเป็นไดเรกทอรีอื่นที่โมดูลของฉันอยู่ได้อย่างไร


มีการพูดคุยกันแล้ว [ที่นี่] [1]: stackoverflow.com/questions/431684/how-do-i-cd-in-python
mudda

4
@ astay13 - ฉันคิดว่า Ignacio หมายความว่าคุณไม่ได้ตั้งใจจะเปลี่ยนไดเรกทอรีเป็นโมดูพา ธ ของคุณ คุณควรตรวจสอบตัวแปรสภาพแวดล้อม PYTHONPATH
simon

คำตอบ:


299

คุณสามารถใช้osโมดูล

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

แต่ถ้ามันเกี่ยวกับการหาโมดูลอื่น ๆ : คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อมที่เรียกว่าPYTHONPATHภายใต้ Linux จะเป็นเช่นนั้น

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

จากนั้นล่ามก็จะค้นหาimportโมดูล ed ที่นี่ด้วย ฉันเดาว่าชื่อจะเหมือนกันใน Windows แต่ไม่รู้ว่าจะเปลี่ยนอย่างไร

แก้ไข

ภายใต้ Windows:

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

(นำมาจากhttp://docs.python.org/using/windows.html )

แก้ไข 2

... และดียิ่งขึ้น: ใช้virtualenvและvirtualenv_wrapperสิ่งนี้จะช่วยให้คุณสร้างสภาพแวดล้อมการพัฒนาที่คุณสามารถเพิ่มโมดูลพา ธ ตามที่คุณต้องการ ( add2virtualenv) โดยไม่สร้างมลพิษให้กับการติดตั้งหรือสภาพแวดล้อมการทำงาน "ปกติ"

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


คุณสิทธิที่จะแก้ไขคำถามของคุณจะเพิ่มข้อเสนอแนะเกี่ยวกับการPYTHONPATHแต่ทราบว่า OP ระบุ Windows ...
simon

และ PYTHONPATH ใน Windows มีปัญหาอะไร แต่ฉันคงคำตอบของฉัน
wal-o-mat

ฉันต้องตั้ง PYTHONPATH ในบรรทัดคำสั่งของ Windows หรือใน Python shell หรือไม่?
astay13

2
@ astray13: คุณมีตัวเลือกในการเพิกเฉยตัวแปรสภาพแวดล้อมและต่อท้ายsys.pathสคริปต์ของคุณ
Steven Rumbalski

3
@ astay13: อย่าตั้งค่าPYTHONPATHทั่วโลกหากคุณติดตั้ง Python มากกว่าหนึ่งตัว (หรือมีโปรแกรมที่ติดตั้งที่รวม Python ไว้ด้วยกัน - หรืออาจกล่าวได้ว่าคุณไม่เคยรู้): มันอาจทำให้การติดตั้งของคุณแตกต่างไปอย่างลึกลับ
jfs

18

คุณต้องการ

import os
os.getcwd()
os.chdir('..')

1
os.chdir ('C: \ Users \ Ajeya \ Documents \') ^ SyntaxError: EOL ในขณะที่สแกนสตริงตามตัวอักษร
AAI

1
@ ไม่ว่าคุณจะต้องเพิ่มแบ็กสแลชเป็นสองเท่าถ้าคุณใช้มันในสตริง Python ปกติ (ไม่ดิบ) Python ช่วยให้คุณใช้เครื่องหมายทับซ้ายแทนได้ ดังนั้นทั้งสองos.chdir('C:/Users/Ajeya/Documents')หรือหรือos.chdir('C:\\Users\\Ajeya\\Documents') os.chdir(r'C:\Users\Ajeya\Documents')
Charles Duffy

มันเป็นการดีที่จะทราบว่าคุณเรียกos.getcwd()ใช้เพื่อการดีบักเท่านั้นเพื่อให้เราสามารถดูว่าไดเรกทอรีการทำงานคืออะไรก่อนที่เราจะเปลี่ยนมัน รหัสที่จะเปลี่ยนเป็นจริงcwdเพียงos.chdir('..')
ไม้จิ้มฟัน Anemone

15
>>> import os
>>> os.system('cd c:\mydir')

ในความเป็นจริงos.system()สามารถดำเนินการคำสั่งใด ๆ ที่ windows command prompt สามารถดำเนินการไม่เพียง แต่เปลี่ยน dir


ไฟล์ "<stdin>", บรรทัดที่ 1 os.system ('cd c: \ Users \ Ajeya \ Documents \') ^ SyntaxError: EOL ขณะที่สแกนสตริงตามตัวอักษร
AAI

6

การเปลี่ยนไดเรกทอรีปัจจุบันไม่ใช่วิธีจัดการกับการค้นหาโมดูลใน Python

ให้ดูเอกสารสำหรับThe Module Search Pathสำหรับวิธีที่ Python ค้นหาโมดูลที่จะนำเข้า

นี่คือบิตที่เกี่ยวข้องจากส่วนโมดูลมาตรฐาน :

ตัวแปร 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.

คำตอบนี้เป็นทอง .. เพียงเพิ่มไดเรกทอรีโครงการของคุณเช่นนี้:import sys sys.path.append('/home/g/PycharmProjects/your_project/')
gies0r

6

วิธีที่ง่ายที่สุดในการเปลี่ยนไดเรกทอรีการทำงานปัจจุบันในไพ ธ อนนั้นใช้แพ็คเกจ 'os' ด้านล่างมีตัวอย่างสำหรับคอมพิวเตอร์ windows:

# Import the os package
import os

# Confirm the current working directory 
os.getcwd()

# Use '\\' while changing the directory 
os.chdir("C:\\user\\foldername")

การใช้ "\\" และการชี้แจงเกี่ยวกับคอมพิวเตอร์ Windows แต่ฉันเห็นด้วยว่าคำตอบที่ยอมรับนั้นมีความหมายมากกว่า
sambeet

4

หากคุณimport osสามารถใช้os.getcwdเพื่อรับไดเรกทอรีการทำงานปัจจุบันและคุณสามารถใช้os.chdirเพื่อเปลี่ยนไดเรกทอรีของคุณ


0

คุณสามารถลองสิ่งนี้:

import os

current_dir = os.path.dirname(os.path.abspath(__file__))   # Can also use os.getcwd()
print(current_dir)                                         # prints(say)- D:\abc\def\ghi\jkl\mno"
new_dir = os.chdir('..\\..\\..\\')                         
print(new_dir)                                             # prints "D:\abc\def\ghi"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.