คำถามติดแท็ก python

Python เป็นภาษาการเขียนโปรแกรมแบบหลายกระบวนทัศน์แบบไดนามิกพิมพ์อเนกประสงค์ มันถูกออกแบบมาให้เรียนรู้เข้าใจและใช้งานได้อย่างรวดเร็วและบังคับใช้ไวยากรณ์ที่สะอาดและสม่ำเสมอ โปรดทราบว่า Python 2 สนับสนุนอย่างเป็นทางการตั้งแต่วันที่ 01-01-2020 สำหรับคำถาม Python เฉพาะรุ่นให้เพิ่มแท็ก [python-2.7] หรือ [python-3.x] เมื่อใช้ตัวแปรหรือไลบรารี Python (เช่น Jython, PyPy, Pandas, Numpy) โปรดรวมไว้ในแท็ก

7
อะไรคือคู่ที่สมบูรณ์แบบใน Python สำหรับ“ ขณะที่ไม่ใช่ EOF”
ในการอ่านไฟล์ข้อความใน C หรือ Pascal ฉันมักจะใช้ตัวอย่างต่อไปนี้เพื่ออ่านข้อมูลจนถึง EOF: while not eof do begin readline(a); do_something; end; ดังนั้นฉันสงสัยว่าฉันจะทำสิ่งนี้ให้ง่ายและรวดเร็วใน Python ได้อย่างไร
115 python  file  iteration  eof 

14
การส่งออกข้อมูลจากการทดสอบหน่วยใน python
หากฉันกำลังเขียนการทดสอบหน่วยใน python (โดยใช้โมดูลที่ไม่เหมาะสมที่สุด) เป็นไปได้ไหมที่จะส่งออกข้อมูลจากการทดสอบที่ล้มเหลวดังนั้นฉันจึงสามารถตรวจสอบเพื่อช่วยอนุมานสิ่งที่ทำให้เกิดข้อผิดพลาดได้ ฉันตระหนักถึงความสามารถในการสร้างข้อความที่กำหนดเองซึ่งสามารถนำข้อมูลบางอย่างไปได้ แต่บางครั้งคุณอาจจัดการกับข้อมูลที่ซับซ้อนมากขึ้นซึ่งไม่สามารถแสดงเป็นสตริงได้อย่างง่ายดาย ตัวอย่างเช่นสมมติว่าคุณมีคลาส Foo และกำลังทดสอบแถบวิธีการโดยใช้ข้อมูลจากรายการที่เรียกว่า testdata: class TestBar(unittest.TestCase): def runTest(self): for t1, t2 in testdata: f = Foo(t1) self.assertEqual(f.bar(t2), 2) หากการทดสอบล้มเหลวฉันอาจต้องการเอาต์พุต t1, t2 และ / หรือ f เพื่อดูว่าเหตุใดข้อมูลนี้จึงทำให้เกิดความล้มเหลว ฉันหมายความว่าตัวแปรสามารถเข้าถึงได้เหมือนกับตัวแปรอื่น ๆ หลังจากที่รันการทดสอบแล้ว

6
ในสคริปต์ Python ฉันจะตั้งค่า PYTHONPATH ได้อย่างไร
ฉันรู้วิธีตั้งค่าใน / etc / profile และในตัวแปรสภาพแวดล้อมของฉัน แต่ถ้าฉันต้องการตั้งค่าระหว่างสคริปต์ล่ะ? มัน import os, sys หรือเปล่า? ฉันต้องทำอย่างไร?

4
จะเพิ่ม ValueError ได้อย่างไร?
ฉันมีรหัสนี้ซึ่งค้นหาดัชนีที่ใหญ่ที่สุดของอักขระเฉพาะในสตริง แต่ฉันต้องการให้เพิ่มValueErrorเมื่ออักขระที่ระบุไม่เกิดขึ้นในสตริง ดังนั้นสิ่งนี้: contains('bababa', 'k') จะส่งผลให้: → ValueError: could not find k in bababa ฉันจะทำเช่นนี้ได้อย่างไร? นี่คือรหัสปัจจุบันสำหรับฟังก์ชันของฉัน: def contains(string,char): list = [] for i in range(0,len(string)): if string[i] == char: list = list + [i] return list[-1]
115 python  string 

9
จะพิมพ์อักขระ Unicode ใน Python ได้อย่างไร?
ฉันต้องการทำพจนานุกรมที่คำภาษาอังกฤษชี้ไปที่คำแปลภาษารัสเซียและภาษาฝรั่งเศส ฉันจะพิมพ์อักขระ Unicode ใน Python ได้อย่างไร นอกจากนี้คุณเก็บอักขระ Unicode ไว้ในตัวแปรได้อย่างไร?

11
วิธียืนยันเอาต์พุตด้วย nosetest / unittest ใน python
ฉันกำลังเขียนการทดสอบสำหรับฟังก์ชันต่อไปนี้: def foo(): print 'hello world!' ดังนั้นเมื่อฉันต้องการทดสอบฟังก์ชันนี้โค้ดจะเป็นดังนี้: import sys from foomodule import foo def test_foo(): foo() output = sys.stdout.getline().strip() # because stdout is an StringIO instance assert output == 'hello world!' แต่ถ้าฉันรัน nosetests ด้วยพารามิเตอร์ -s การทดสอบจะล้มเหลว ฉันจะจับเอาท์พุทด้วยโมดูลที่ไม่กระชับหรือจมูกได้อย่างไร?

14
พิมพ์หลาม end = ''
ฉันมีสคริปต์ python ที่ฉันต้องเรียกใช้ gdal_retile.py แต่ฉันได้รับข้อยกเว้นในบรรทัดนี้: if Verbose: print("Building internam Index for %d tile(s) ..." % len(inputTiles), end=' ') end=''ไวยากรณ์ไม่ถูกต้อง ฉันอยากรู้ว่าทำไมและผู้เขียนน่าจะตั้งใจทำอะไร ฉันยังใหม่กับ python ถ้าคุณยังไม่ได้เดา ฉันคิดว่าต้นตอของปัญหาคือการนำเข้าเหล่านี้ล้มเหลวดังนั้นจึงต้องมีการนำเข้านี้ from __future__ import print_function try: from osgeo import gdal from osgeo import ogr from osgeo import osr from osgeo.gdalconst import * except: import gdal import ogr …
115 python 

3
while (1) เทียบกับ while (True) - เหตุใดจึงมีความแตกต่าง (ใน python 2 bytecode)
ทึ่งกับคำถามนี้เกี่ยวกับลูปที่ไม่มีที่สิ้นสุดใน perl: while (1) Vs. สำหรับ (;;) ความเร็วต่างกันไหม ฉันตัดสินใจที่จะทำการเปรียบเทียบที่คล้ายกันใน python ฉันคาดว่าคอมไพเลอร์จะสร้างรหัสไบต์เดียวกันสำหรับwhile(True): passและwhile(1): passแต่นี่ไม่ใช่กรณีใน python2.7 สคริปต์ต่อไปนี้: import dis def while_one(): while 1: pass def while_true(): while True: pass print("while 1") print("----------------------------") dis.dis(while_one) print("while True") print("----------------------------") dis.dis(while_true) ให้ผลลัพธ์ดังต่อไปนี้: while 1 ---------------------------- 4 0 SETUP_LOOP 3 (to 6) 5 >> 3 JUMP_ABSOLUTE 3 …
115 python 

6
สร้างโมเดล Django หรืออัปเดตหากมี
ฉันต้องการสร้างวัตถุแบบจำลองเช่นบุคคลถ้าไม่มี ID บุคคลนั้นหรือฉันจะได้รับวัตถุบุคคลนั้น รหัสสำหรับสร้างบุคคลใหม่ดังต่อไปนี้: class Person(models.Model): identifier = models.CharField(max_length = 10) name = models.CharField(max_length = 20) objects = PersonManager() class PersonManager(models.Manager): def create_person(self, identifier): person = self.create(identifier = identifier) return person แต่ฉันไม่รู้ว่าจะตรวจสอบและรับวัตถุบุคคลที่มีอยู่ได้ที่ไหน

6
การเขียน dict ไปยังไฟล์ txt และอ่านกลับ?
ฉันพยายามเขียนพจนานุกรมลงในไฟล์ txt อ่านแล้วค่า Dict raw_inputโดยการพิมพ์คีย์ด้วย ฉันรู้สึกว่าฉันพลาดไปเพียงก้าวเดียว แต่ฉันมองหามาระยะหนึ่งแล้ว ฉันได้รับข้อผิดพลาดนี้ File "name.py", line 24, in reading print whip[name] TypeError: string indices must be integers, not str รหัสของฉัน: #!/usr/bin/env python from sys import exit class Person(object): def __init__(self): self.name = "" self.address = "" self.phone = "" self.age = "" self.whip = {} …
115 python 

6
เป็นที่ยอมรับและปลอดภัยในการรันการติดตั้ง pip ภายใต้ sudo หรือไม่
ฉันเริ่มใช้ Mac เพื่อติดตั้งแพ็คเกจ Python ในแบบเดียวกับที่ทำกับ Windows PC ในที่ทำงาน อย่างไรก็ตามใน Mac ของฉันฉันพบข้อผิดพลาดที่ถูกปฏิเสธการอนุญาตบ่อยครั้งขณะเขียนลงในไฟล์บันทึกหรือแพ็คเกจไซต์ ดังนั้นฉันจึงคิดที่จะทำงานpip install <package>ภายใต้sudoแต่การใช้ sudo ที่ปลอดภัย / ยอมรับได้หรือไม่โดยพิจารณาว่าฉันแค่ต้องการติดตั้งสิ่งนี้ในบัญชีผู้ใช้ปัจจุบันของฉัน ตัวอย่างการย้อนกลับจากข้อผิดพลาด I / O ของไฟล์บันทึก: Command /usr/bin/python -c "import setuptools;__file__='/Users/markwalker/build/pycrypto/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record /var/folders/tq/hy1fz_4j27v6rstzzw4vymnr0000gp/T/pip-k6f2FU-record/install-record.txt failed with error code 1 in /Users/markwalker/build/pycrypto Storing complete log in /Users/markwalker/Library/Logs/pip.log Traceback (most recent …
115 python  macos  pip  sudo 

7
วิธีแก้ไขข้อผิดพลาด“ ImportError: No module named …” ใน Python
วิธีที่ถูกต้องในการแก้ไขข้อผิดพลาด ImportError นี้คืออะไร? ฉันมีโครงสร้างไดเร็กทอรีต่อไปนี้: /home/bodacydo /home/bodacydo/work /home/bodacydo/work/project /home/bodacydo/work/project/programs /home/bodacydo/work/project/foo และฉันอยู่ในไดเร็กทอรี /home/bodacydo/work/project ตอนนี้ถ้าฉันพิมพ์ python ./programs/my_python_program.py ฉันได้รับทันที ImportError: No module named foo.tasks ./programs/my_python_program.pyมีบรรทัดต่อไปนี้: from foo.tasks import my_function ฉันไม่เข้าใจว่าทำไม python ไม่พบ./foo/tasks.pyมันอยู่ที่นั่น ถ้าฉันทำจาก Python shell มันก็ใช้ได้: python >>> from foo.tasks import my_function มันใช้ไม่ได้ถ้าฉันเรียกมันผ่านpython ./programs/my_python_program.pyสคริปต์
115 python 


3
Python แยกสตริงตาม regex
วิธีที่ดีที่สุดในการแยกสตริง"HELLO there HOW are YOU"โดยใช้คำตัวพิมพ์ใหญ่ (ใน Python) คืออะไร? ดังนั้นฉันจึงจบลงด้วยอาร์เรย์เช่นนี้: results = ['HELLO there', 'HOW are', 'YOU'] แก้ไข: ฉันเหนื่อย: p = re.compile("\b[A-Z]{2,}\b") print p.split(page_text) ดูเหมือนจะไม่ได้ผล
115 python  regex  split 

9
วิธีใช้ __iter __ (ด้วยตนเอง) สำหรับวัตถุคอนเทนเนอร์ (Python)
ฉันได้เขียนอ็อบเจ็กต์คอนเทนเนอร์ที่กำหนดเอง ตามหน้านี้ฉันต้องใช้วิธีนี้กับวัตถุของฉัน: __iter__(self) อย่างไรก็ตามในการติดตามลิงก์ไปยังIterator typesในคู่มืออ้างอิง Python ไม่มีตัวอย่างวิธีการใช้งานของคุณเอง ใครบางคนสามารถโพสต์ตัวอย่างข้อมูล (หรือลิงก์ไปยังแหล่งข้อมูล) ที่แสดงวิธีการนี้ได้หรือไม่ คอนเทนเนอร์ที่ฉันกำลังเขียนคือแผนที่ (เช่นเก็บค่าตามคีย์ที่ไม่ซ้ำกัน) คำสั่งสามารถทำซ้ำได้ดังนี้: for k, v in mydict.items() ในกรณีนี้ฉันต้องสามารถส่งคืนสององค์ประกอบ (ทูเพิล?) ในตัววนซ้ำ ยังไม่ชัดเจนว่าจะใช้ตัวทำซ้ำดังกล่าวอย่างไร (แม้จะมีคำตอบหลายประการที่ให้ไว้) มีใครช่วยอธิบายเพิ่มเติมเกี่ยวกับวิธีใช้ตัววนซ้ำสำหรับวัตถุคอนเทนเนอร์แบบแผนที่ได้ไหม (คือคลาสแบบกำหนดเองที่ทำหน้าที่เหมือนคำสั่ง)?
115 python 

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