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

สตรีมเอาต์พุตมาตรฐาน (stdout) คือสตรีมที่โปรแกรมเขียนข้อมูลเอาต์พุต

10
วิธีเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์และ stdout
Наэтотвопросестьответына กองมากเกินнарусском : Каксохранитьвыводлюбойкомандывфайли сразужеувидетьеговтерминале ? ใน bash การโทรfooจะแสดงเอาต์พุตใด ๆ จากคำสั่งนั้นบน stdout การโทรfoo > outputจะเปลี่ยนเส้นทางเอาต์พุตใด ๆ จากคำสั่งนั้นไปยังไฟล์ที่ระบุ (ในกรณีนี้คือ 'เอาต์พุต') มีวิธีการเปลี่ยนเส้นทางการส่งออกไปยังไฟล์และมันจะแสดงบน stdout หรือไม่?
988 linux  bash  file-io  io  stdout 

11
ฉันจะไปป์ stderr ได้อย่างไรและไม่ใช่ stdout?
ผมมีโปรแกรมที่เขียนข้อมูลไปยังstdoutและstderrและฉันต้องgrepผ่านอะไรมาเพื่อstderrขณะที่ไม่คำนึงถึงstdout แน่นอนฉันสามารถทำได้ใน 2 ขั้นตอน: command > /dev/null 2> temp.file grep 'something' temp.file แต่ฉันต้องการที่จะสามารถทำได้โดยไม่ต้องไฟล์ temp มีเทคนิคการวางท่อแบบอัจฉริยะหรือไม่?
981 bash  grep  stdout  pipe  stderr 

16
ปิดใช้งานการบัฟเฟอร์เอาต์พุต
การส่งออกบัฟเฟอร์เปิดใช้งานโดยค่าเริ่มต้นในตัวแปลของ Python ไว้sys.stdoutหรือไม่ หากคำตอบเป็นบวกทุกวิธีที่จะปิดการใช้งานคืออะไร? คำแนะนำจนถึง: ใช้-uสวิตช์บรรทัดคำสั่ง ห่อsys.stdoutในวัตถุที่วูบวาบหลังจากการเขียนทุกครั้ง ตั้งค่าPYTHONUNBUFFEREDenv sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0) มีวิธีอื่นในการตั้งค่าสถานะโกลบอลบางรายการในsys/ โดยทางsys.stdoutโปรแกรมในระหว่างการดำเนินการหรือไม่?
532 python  stdout  buffered 


30
แสดงคำสั่งของ Windows พร้อมท์เอาต์พุตและเปลี่ยนเส้นทางไปยังไฟล์
ฉันจะรันแอพพลิเคชั่นบรรทัดคำสั่งในพรอมต์คำสั่งของ Windows ได้อย่างไรและให้แสดงผลลัพธ์และเปลี่ยนเส้นทางไปยังไฟล์ในเวลาเดียวกันได้อย่างไร ตัวอย่างเช่นถ้าฉันจะเรียกใช้คำสั่งdir > test.txtนี้จะเปลี่ยนเส้นทางการส่งออกไปยังไฟล์ที่เรียกว่าtest.txtโดยไม่แสดงผลลัพธ์ ฉันจะเขียนคำสั่งเพื่อแสดงเอาต์พุตและเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์ในพรอมต์คำสั่ง Windows ได้เช่นเดียวกับteeคำสั่งบน Unix ได้อย่างไร
371 batch-file  cmd  stdout  tee 

8
คอนฟิกูเรชันตัวบันทึกเพื่อล็อกไฟล์และพิมพ์ไปยัง stdout
ฉันใช้โมดูลการบันทึกของ Python เพื่อบันทึกสตริงการดีบักไปยังไฟล์ที่ใช้งานได้ดี นอกจากนี้ฉันต้องการใช้โมดูลนี้เพื่อพิมพ์สตริงออกไปยัง stdout ฉันจะทำสิ่งนี้ได้อย่างไร เพื่อบันทึกสตริงของฉันเป็นไฟล์ฉันใช้รหัสต่อไปนี้: import logging import logging.handlers logger = logging.getLogger("") logger.setLevel(logging.DEBUG) handler = logging.handlers.RotatingFileHandler( LOGFILE, maxBytes=(1048576*5), backupCount=7 ) formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") handler.setFormatter(formatter) logger.addHandler(handler) แล้วเรียกใช้ฟังก์ชันตัวบันทึกเช่น logger.debug("I am written to the file") ขอบคุณสำหรับความช่วยเหลือที่นี่!
353 python  file  logging  stdout 

10
การตั้งค่าการเข้ารหัสที่ถูกต้องเมื่อ piping stdout ใน Python
เมื่อไพพ์เอาท์พุทของโปรแกรม Python ล่าม Python สับสนเกี่ยวกับการเข้ารหัสและตั้งค่าเป็น None นี่หมายถึงโปรแกรมเช่นนี้: # -*- coding: utf-8 -*- print u"åäö" จะทำงานได้ดีเมื่อทำงานตามปกติ แต่ล้มเหลวด้วย: UnicodeEncodeError: ตัวแปลงสัญญาณ 'ascii' ไม่สามารถเข้ารหัสอักขระ u '\ xa0' ในตำแหน่ง 0: เลขลำดับไม่อยู่ในช่วง (128) เมื่อใช้ในลำดับท่อ เป็นวิธีที่ดีที่สุดในการทำให้งานนี้เมื่อท่อได้อย่างไร ฉันสามารถบอกให้ใช้การเข้ารหัสเชลล์ / ระบบไฟล์ / อะไรก็ได้ที่กำลังใช้อยู่ คำแนะนำที่ฉันได้เห็นในตอนนี้คือการแก้ไข site.py ของคุณโดยตรงหรือการเข้ารหัสฮาร์ดโค้ดเริ่มต้นโดยใช้แฮ็คนี้: # -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8') print u"åäö" มีวิธีที่ดีกว่าในการทำให้ท่อทำงานหรือไม่

10
เปลี่ยนเส้นทาง stdout เป็นไฟล์ใน Python หรือไม่?
Наэтотвопросестьответына Stack Overflow เวอร์ชั่นก่อนหน้า : ถัดไปบทวิจารณ์ sys.stdout вфайл ฉันจะเปลี่ยนเส้นทาง stdout ไปยังไฟล์ที่กำหนดเองใน Python ได้อย่างไร เมื่อสคริปต์ Python ที่รันเป็นเวลานาน (เช่นเว็บแอปพลิเคชัน) เริ่มต้นจากภายในเซสชัน ssh และ backgounded และปิดเซสชัน ssh แอปพลิเคชันจะเพิ่ม IOError และล้มเหลวทันทีที่พยายามเขียนไปยัง stdout ฉันต้องการค้นหาวิธีที่จะทำให้แอปพลิเคชันและโมดูลส่งออกไปยังไฟล์แทนที่จะเป็น stdout เพื่อป้องกันความล้มเหลวเนื่องจาก IOError ขณะนี้ฉันใช้ nohup เพื่อเปลี่ยนเส้นทางการส่งออกไปยังไฟล์และนั่นทำให้งานเสร็จ แต่ฉันสงสัยว่ามีวิธีที่จะทำหรือไม่โดยไม่ต้องใช้ nohup จากความอยากรู้ ฉันได้ลองไปแล้วsys.stdout = open('somefile', 'w')แต่นี่ดูเหมือนจะไม่ป้องกันบางโมดูลภายนอกที่ยังคงส่งสัญญาณออกไปยังเทอร์มินัล (หรืออาจเป็นเพราะsys.stdout = ...สายไม่ได้ทำงานเลย) ฉันรู้ว่ามันควรจะทำงานได้จากสคริปต์ที่เรียบง่ายกว่าที่ฉันเคยทดสอบ แต่ฉันยังไม่มีเวลาที่จะทำการทดสอบกับเว็บแอปพลิเคชัน
314 python  stdout 

5
จะไปป์ stdout ขณะที่เก็บไว้บนหน้าจอได้อย่างไร (และไม่ใช่ไฟล์เอาต์พุต)
ฉันต้องการส่งออกมาตรฐานของโปรแกรมในขณะที่เก็บไว้บนหน้าจอ ด้วยตัวอย่างง่ายๆ ( echoใช้ที่นี่เป็นเพียงภาพประกอบเท่านั้น): $ echo 'ee' | foo ee <- ผลลัพธ์ที่ฉันต้องการดู ฉันรู้ว่าทีสามารถคัดลอก stdout ไปยังไฟล์ได้ แต่นั่นไม่ใช่สิ่งที่ฉันต้องการ $ echo 'ee' | tee output.txt | foo ฉันพยายาม $ echo 'ee' | tee /dev/stdout | fooแต่มันใช้งานไม่ได้ตั้งแต่เอาท์พุททีไป/dev/stdoutเป็น pipfoo
234 bash  shell  pipe  output  stdout 

10
สับสนเกี่ยวกับ stdin, stdout และ stderr หรือไม่
ฉันค่อนข้างสับสนกับวัตถุประสงค์ของไฟล์ทั้งสามนี้ หากความเข้าใจของฉันถูกต้องstdinเป็นไฟล์ที่โปรแกรมเขียนลงในคำร้องขอเพื่อเรียกใช้งานในกระบวนการstdoutเป็นไฟล์ที่เคอร์เนลเขียนเอาต์พุตและกระบวนการที่ร้องขอให้เข้าถึงข้อมูลจากและstderrเป็นไฟล์ที่เข้าสู่ ซึ่งข้อยกเว้นทั้งหมดจะถูกป้อน เมื่อเปิดไฟล์เหล่านี้เพื่อตรวจสอบว่าสิ่งเหล่านี้เกิดขึ้นจริงหรือไม่ฉันไม่พบสิ่งใดเลยที่จะแนะนำ! สิ่งที่ฉันอยากรู้คือจุดประสงค์ของไฟล์เหล่านี้คืออะไรตอบคำถามด้วยศัพท์แสงทางเทคโนโลยีน้อยมาก!
230 linux  stdout  stdin  stderr 

17
พิมพ์หลายงานบนบรรทัดเดียวกันใน Python
ฉันต้องการเรียกใช้สคริปต์ซึ่งโดยทั่วไปจะแสดงผลลัพธ์เช่นนี้ Installing XXX... [DONE] ขณะนี้ฉันพิมพ์ครั้งแรกแล้วฉันจะพิมพ์Installing XXX...[DONE] อย่างไรก็ตามตอนนี้ฉันต้องการพิมพ์Installing xxx...และ[DONE]ในบรรทัดเดียวกัน ความคิดใด ๆ

13
คำสั่งเพื่อรับบรรทัดที่ n ของ STDOUT
มีคำสั่ง bash ใดบ้างที่จะให้คุณได้บรรทัดที่ n ของ STDOUT? กล่าวคือสิ่งที่จะใช้เวลานี้ $ ls -l -rw-r--r--@ 1 root wheel my.txt -rw-r--r--@ 1 root wheel files.txt -rw-r--r--@ 1 root wheel here.txt และทำสิ่งที่ชอบ $ ls -l | magic-command 2 -rw-r--r--@ 1 root wheel files.txt ฉันรู้ว่าสิ่งนี้จะเป็นวิธีปฏิบัติที่ไม่ดีเมื่อเขียนสคริปต์เพื่อนำมาใช้ซ้ำ แต่เมื่อทำงานกับเชลล์แบบวันต่อวันมันจะมีประโยชน์สำหรับฉันที่จะกรอง STDOUT ของฉันในลักษณะนี้ ฉันก็รู้ว่านี่จะเป็นคำสั่งแบบกึ่ง ๆ เขียน (buffer STDOUT ส่งคืนบรรทัดที่ระบุ) แต่ฉันต้องการทราบว่ามีคำสั่งเชลล์มาตรฐานบางอย่างที่จะทำสิ่งนี้ซึ่งจะพร้อมใช้งานโดยที่ฉันไม่ปล่อยสคริปต์ลง
210 bash  shell  sed  stdout 

10
วิธีเปลี่ยนเส้นทางเอาต์พุตของ PowerShell ไปยังไฟล์ระหว่างการดำเนินการ
ฉันมีสคริปต์ PowerShell ซึ่งฉันต้องการจะเปลี่ยนเส้นทางผลลัพธ์ไปยังไฟล์ ปัญหาคือฉันไม่สามารถเปลี่ยนวิธีเรียกสคริปต์นี้ได้ ดังนั้นฉันไม่สามารถทำ: .\MyScript.ps1 > output.txt ฉันจะเปลี่ยนเส้นทางการส่งออกของสคริปต์ PowerShell ในระหว่างการดำเนินการได้อย่างไร

12
การใช้เอาต์พุตจากคำสั่งล่าสุดใน Bash
เอาต์พุตของคำสั่ง Bash ถูกเก็บในการลงทะเบียนหรือไม่? เช่นสิ่งที่คล้ายกับ$?การจับเอาท์พุทแทนที่จะออกจากสถานะ ฉันสามารถกำหนดผลลัพธ์ให้กับตัวแปรด้วย: output=$(command) แต่มันก็พิมพ์มากกว่า ...
180 bash  terminal  stdout 

6
ทำไมการพิมพ์ถึง stdout ช้ามาก? มันสามารถเร่งความเร็วได้หรือไม่
ฉันประหลาดใจ / ผิดหวังอยู่เสมอว่าต้องใช้เวลานานแค่ไหนในการส่งออกไปยังเครื่องด้วยคำสั่งพิมพ์ หลังจากการบันทึกอย่างช้า ๆ เมื่อเร็ว ๆ นี้ฉันตัดสินใจที่จะมองมันและรู้สึกประหลาดใจมากที่พบว่าเกือบตลอดเวลาที่ใช้รอเครื่องเทอร์มินัลเพื่อประมวลผลผลลัพธ์ การเขียนไปยัง stdout สามารถเร่งความเร็วได้บ้าง ผมเขียนสคริปต์ (' print_timer.py' ที่ด้านล่างของคำถามนี้) เพื่อเปรียบเทียบระยะเวลาเมื่อเขียน 100k เส้นที่ stdout /dev/nullเพื่อไฟล์และมีการเปลี่ยนเส้นทางไปยัง นี่คือผลการจับเวลา: $ python print_timer.py this is a test this is a test <snipped 99997 lines> this is a test ----- timing summary (100k lines each) ----- print :11.950 s write …
166 python  linux  printing  stdout  tty 

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