Tên tệp đầu ra python giống như đầu vào

Hàm trả về danh sách các từ của một chuỗi đã cho sử dụng dấu phân cách làm chuỗi phân cách

  • Nếu maxsplit được đưa ra, danh sách sẽ có tối đa maxsplit+1 phần tử
  • Nếu maxsplit không được chỉ định hoặc -1, thì không có giới hạn về số lần phân tách
  • Nếu sep được đưa ra, các dấu phân cách liên tiếp không được nhóm lại với nhau và được coi là phân cách các chuỗi trống
  • Đối số sep có thể bao gồm nhiều ký tự
  • Việc tách một chuỗi rỗng bằng một dấu tách được chỉ định sẽ trả về ['']

Trình bày bằng hình ảnh


Giải pháp mẫu. -

Mã Python

filename = input["Input the Filename: "]
f_extns = filename.split["."]
print ["The extension of the file is : " + repr[f_extns[-1]]]

Đầu ra mẫu

Input the Filename: abc.java                                                                                  
The  extension of the file is : 'java'

Sơ đồ


Trực quan hóa việc thực thi mã Python

Công cụ sau đây trực quan hóa những gì máy tính đang làm từng bước khi nó thực thi chương trình nói trên

Làm cách nào để thiết lập tên tệp đầu ra để tự động thay đổi phần ngày dựa trên tên tệp Đầu vào. Ví dụ: tệp đầu vào có tên 2021-04-30 GL 331115 State. Tôi muốn tên tệp đầu ra là 2021-04-30 CR TX Gasoline Workpapers

Chỉ có ngày thay đổi, phần còn lại của tên tệp luôn giống nhau. Tôi đã thử tìm kiếm các bài viết khác về điều này, nhưng chúng không hoàn toàn giống nhau

Chúng tôi thực sự không muốn phải chỉnh sửa mã Python của mình mỗi khi chúng tôi muốn xử lý một tệp khác. Sẽ hữu ích hơn nếu yêu cầu người dùng nhập chuỗi tên tệp mỗi khi chương trình chạy để họ có thể sử dụng chương trình của chúng tôi trên các tệp khác nhau mà không thay đổi mã Python

Điều này khá đơn giản để thực hiện bằng cách đọc tên tệp từ người dùng bằng cách sử dụng

import re  # de module regular expressions wordt geïmporteerd.
from pathlib import Path
import os

source_dir = Path['/VGw_LanguageDetector']
files = source_dir.glob['*.html']

def parser[]:
    for file in files:
        f = open['file', 'a+', encoding='utf8']
        f2 = open['filename.txt', 'a+', encoding='utf8']  # creëert een nieuwe file om de output naar weg te schrijven

        html_input = f.read[]  # creatie van een string door de html file in te lezen in het programma

        findall_matches = re.findall["

[.*?]

", html_input, flags=re.DOTALL] # selecteert enkel de leestekst joined_output_string = "\n".join[findall_matches] # plakt alle gevonden tekst samen text = re.sub['|" +"', "", joined_output_string] # vervangt html info en blanks door een spatie f2.write[text] # wegschrijven van de txt-file f2.close[] parser[]
1 như sau

fname = input['Enter the file name: ']
fhand = open[fname]
count = 0
for line in fhand:
    if line.startswith['Subject:']:
        count = count + 1
fhand.close[]
print['There were', count, 'subject lines in', fname]

Chúng tôi đọc tên tệp từ người dùng và đặt nó vào một biến có tên

import re  # de module regular expressions wordt geïmporteerd.
from pathlib import Path
import os

source_dir = Path['/VGw_LanguageDetector']
files = source_dir.glob['*.html']

def parser[]:
    for file in files:
        f = open['file', 'a+', encoding='utf8']
        f2 = open['filename.txt', 'a+', encoding='utf8']  # creëert een nieuwe file om de output naar weg te schrijven

        html_input = f.read[]  # creatie van een string door de html file in te lezen in het programma

        findall_matches = re.findall["

[.*?]

", html_input, flags=re.DOTALL] # selecteert enkel de leestekst joined_output_string = "\n".join[findall_matches] # plakt alle gevonden tekst samen text = re.sub['|" +"', "", joined_output_string] # vervangt html info en blanks door een spatie f2.write[text] # wegschrijven van de txt-file f2.close[] parser[]
2 và mở tệp đó. Bây giờ chúng ta có thể chạy chương trình nhiều lần trên các tệp khác nhau

 python search6.py # seach6.py is the file containing the above script.
 Enter the file name: mbox.txt
 There were 1797 subject lines in mbox.txt

 python search6.py
  Enter the file name: mbox-short.txt
There were 27 subject lines in mbox-short.txt

Đặt đoạn mã sau để mở và đếm số dòng của tệp từ người dùng. Coi chừng thụt đầu dòng và các khối mã bổ sung

        count = 0
fname = input['Enter the file name: ']
---
fhand = open[fname]
---
for line in fhand:
---
for line in fname: #paired
---
    count = count + 1
---
fhand.close[]
print['There were', count, 'lines in', fname]
        

Trước khi xem qua phần tiếp theo, hãy xem qua chương trình trên và tự hỏi: “Điều gì có thể xảy ra ở đây?”

Có năm lỗi trong đoạn mã dưới đây. Sửa mã để yêu cầu người dùng cung cấp tệp, mở “mbox-short. txt”, và đếm số dòng bắt đầu bằng

import re  # de module regular expressions wordt geïmporteerd.
from pathlib import Path
import os

source_dir = Path['/VGw_LanguageDetector']
files = source_dir.glob['*.html']

def parser[]:
    for file in files:
        f = open['file', 'a+', encoding='utf8']
        f2 = open['filename.txt', 'a+', encoding='utf8']  # creëert een nieuwe file om de output naar weg te schrijven

        html_input = f.read[]  # creatie van een string door de html file in te lezen in het programma

        findall_matches = re.findall["

[.*?]

", html_input, flags=re.DOTALL] # selecteert enkel de leestekst joined_output_string = "\n".join[findall_matches] # plakt alle gevonden tekst samen text = re.sub['|" +"', "", joined_output_string] # vervangt html info en blanks door een spatie f2.write[text] # wegschrijven van de txt-file f2.close[] parser[]
3

Xin chào, tôi đang cố gắng viết một chương trình nhỏ sẽ liên tiếp mở tất cả các tệp bằng một. html ở một vị trí, hãy thực hiện một số công việc trên chúng và sau đó lưu chúng bằng cùng một tên nhưng với. phần mở rộng txt

Đây là những gì tôi có. Mã không đưa ra bất kỳ lỗi nào nhưng các tệp mới không được tạo và tôi có ấn tượng rằng không có gì xảy ra

Chức năng phân tích cú pháp tự hoạt động [tôi đã thử nó trên một tệp riêng biệt và nó hoạt động tốt]. Đường dẫn dường như cũng đang hoạt động dưới dạng một tệp [tên tệp. txt] được tạo, nhưng nó trống.
Có ai có thể chỉ cho tôi những gì tôi đang thiếu không?

import re  # de module regular expressions wordt geïmporteerd.
from pathlib import Path
import os

source_dir = Path['/VGw_LanguageDetector']
files = source_dir.glob['*.html']

def parser[]:
    for file in files:
        f = open['file', 'a+', encoding='utf8']
        f2 = open['filename.txt', 'a+', encoding='utf8']  # creëert een nieuwe file om de output naar weg te schrijven

        html_input = f.read[]  # creatie van een string door de html file in te lezen in het programma

        findall_matches = re.findall["

[.*?]

", html_input, flags=re.DOTALL] # selecteert enkel de leestekst joined_output_string = "\n".join[findall_matches] # plakt alle gevonden tekst samen text = re.sub['|" +"', "", joined_output_string] # vervangt html info en blanks door een spatie f2.write[text] # wegschrijven van de txt-file f2.close[] parser[]

Cảm ơn

Bởi Vicky qua Thảo luận về Python. org lúc 25 tháng 3 năm 2022 21. 34

Xin chào, tôi đang cố gắng viết một chương trình nhỏ sẽ mở liên tục
tất cả các tệp có một. html ở một vị trí, hãy thực hiện một số công việc trên
chúng và sau đó lưu chúng bằng cùng một tên nhưng với. phần mở rộng txt.

Đây là những gì tôi có. Mã không đưa ra bất kỳ lỗi nào nhưng các tệp mới không được tạo và tôi có ấn tượng rằng không có gì xảy ra

Không hẳn. Tôi khuyên bạn nên thực hiện một số cuộc gọi in. Nếu không có gì khác, a

import re  # de module regular expressions wordt geïmporteerd.
from pathlib import Path
import os

source_dir = Path['/VGw_LanguageDetector']
files = source_dir.glob['*.html']

def parser[]:
    for file in files:
        f = open['file', 'a+', encoding='utf8']
        f2 = open['filename.txt', 'a+', encoding='utf8']  # creëert een nieuwe file om de output naar weg te schrijven
8 ở đầu vòng lặp sẽ cho bạn biết tệp nào đang được
xử lý [hoặc ít nhất, được cho là đang được xử lý, .
see below].

Chức năng trình phân tích cú pháp tự hoạt động [Tôi đã thử nó trên một tệp riêng biệt và nó hoạt động tốt]

Cá nhân tôi sẽ làm cho

import re  # de module regular expressions wordt geïmporteerd.
from pathlib import Path
import os

source_dir = Path['/VGw_LanguageDetector']
files = source_dir.glob['*.html']

def parser[]:
    for file in files:
        f = open['file', 'a+', encoding='utf8']
        f2 = open['filename.txt', 'a+', encoding='utf8']  # creëert een nieuwe file om de output naar weg te schrijven
9 hoạt động trên một tệp duy nhất và gọi nó
trong một vòng lặp. Nó đơn giản hóa chức năng rất nhiều.

Tuy nhiên, mã thực tế của bạn

import re  # de module regular expressions wordt geïmporteerd.
from pathlib import Path
import os

source_dir = Path['/VGw_LanguageDetector']
files = source_dir.glob['*.html']

def parser[]:
    for file in files:
        f = open['file', 'a+', encoding='utf8']
        f2 = open['filename.txt', 'a+', encoding='utf8']  # creëert een nieuwe file om de output naar weg te schrijven

Vấn đề lớn ở đây là bạn đang mở các tên tệp cố định ở đây, chứ không phải
tên từ vòng lặp. Đây.

f = open['file', 'a+', encoding='utf8']

mở tệp có tên là

f = open['file', 'a+', encoding='utf8']
0 chứ không phải tệp được đặt tên theo biến của bạn
f = open['file', 'a+', encoding='utf8']
1. Điều này cũng vậy.

Input the Filename: abc.java                                                                                  
The  extension of the file is : 'java'
2

mở tên tệp

f = open['file', 'a+', encoding='utf8']
2, không phải tên tệp bắt nguồn từ
biến của bạn
f = open['file', 'a+', encoding='utf8']
1.

Một cái gì đó như thế này

Input the Filename: abc.java                                                                                  
The  extension of the file is : 'java'
5

Tôi sẽ sử dụng các tên biến rõ ràng hơn, chẳng hạn như “html_filename” và
“text_filename”, chẳng hạn.

Input the Filename: abc.java                                                                                  
The  extension of the file is : 'java'
6

Đó là vấn đề chính của bạn. Tuy nhiên, có một số
điều khác cần lưu ý.

Input the Filename: abc.java                                                                                  
The  extension of the file is : 'java'
7

Thao tác này sẽ mở tệp để nối thêm, ở chế độ đọc/ghi. Bạn chỉ muốn
đọc nó.

Input the Filename: abc.java                                                                                  
The  extension of the file is : 'java'
8

Đây

Input the Filename: abc.java                                                                                  
The  extension of the file is : 'java'
9

cũng mở để chắp thêm, ở chế độ đọc/ghi. Trong khi tôi cho rằng bạn chỉ
muốn viết nó.

fname = input['Enter the file name: ']
fhand = open[fname]
count = 0
for line in fhand:
    if line.startswith['Subject:']:
        count = count + 1
fhand.close[]
print['There were', count, 'subject lines in', fname]
0

Nhưng có một cách thậm chí còn tốt hơn. viết độc quyền. Điều này không ngăn
những người viết khác, nó chỉ lỗi nếu tệp đã tồn tại, tránh
sự cố.

import re  # de module regular expressions wordt geïmporteerd.
from pathlib import Path
import os

source_dir = Path['/VGw_LanguageDetector']
files = source_dir.glob['*.html']

def parser[]:
    for file in files:
        f = open['file', 'a+', encoding='utf8']
        f2 = open['filename.txt', 'a+', encoding='utf8']  # creëert een nieuwe file om de output naar weg te schrijven
0

Tôi nhận thấy bạn không đóng

f = open['file', 'a+', encoding='utf8']
4. Nó sẽ bị đóng khi bạn mở tệp
tiếp theo, do tác dụng phụ của việc
f = open['file', 'a+', encoding='utf8']
4 không còn đề cập đến tệp
đã mở trước đó nữa và do đó, số lượng tham chiếu của tệp đó . Nhưng tốt hơn hết là bạn nên đóng
that file gets closed and freed from memory. But it is better to close
những thứ đáng tin cậy và kịp thời. Thành ngữ tiêu chuẩn cho điều này là như thế này.

import re  # de module regular expressions wordt geïmporteerd.
from pathlib import Path
import os

source_dir = Path['/VGw_LanguageDetector']
files = source_dir.glob['*.html']

def parser[]:
    for file in files:
        f = open['file', 'a+', encoding='utf8']
        f2 = open['filename.txt', 'a+', encoding='utf8']  # creëert een nieuwe file om de output naar weg te schrijven
1

Thao tác này sẽ mở tệp để đọc, đọc văn bản vào

f = open['file', 'a+', encoding='utf8']
6 rồi
đóng tệp ngay khi bạn thoát khỏi câu lệnh with.

import re  # de module regular expressions wordt geïmporteerd.
from pathlib import Path
import os

source_dir = Path['/VGw_LanguageDetector']
files = source_dir.glob['*.html']

def parser[]:
    for file in files:
        f = open['file', 'a+', encoding='utf8']
        f2 = open['filename.txt', 'a+', encoding='utf8']  # creëert een nieuwe file om de output naar weg te schrijven
2

Cái này gọn gàng và đơn giản. Nếu bạn thấy mình đang thực hiện phân tích cú pháp HTML
phức tạp hơn, tôi khuyên bạn nên xem gói BeautifulSoup, có tên

f = open['file', 'a+', encoding='utf8']
7. beautifulsoup4 · PyPI

Ngoài ra, theo thông lệ chung với các chuỗi biểu thức chính quy, tôi khuyên bạn
sử dụng “chuỗi thô”.

import re  # de module regular expressions wordt geïmporteerd.
from pathlib import Path
import os

source_dir = Path['/VGw_LanguageDetector']
files = source_dir.glob['*.html']

def parser[]:
    for file in files:
        f = open['file', 'a+', encoding='utf8']
        f2 = open['filename.txt', 'a+', encoding='utf8']  # creëert een nieuwe file om de output naar weg te schrijven
3

Việc mở đầu

f = open['file', 'a+', encoding='utf8']
8 làm cho biểu thức trở thành "chuỗi thô", trong đó dấu gạch chéo ngược
[
f = open['file', 'a+', encoding='utf8']
9] không có gì đặc biệt. Vì các biểu thức chính quy thường có nhiều
dấu gạch chéo ngược, chẳng hạn như
Input the Filename: abc.java                                                                                  
The  extension of the file is : 'java'
20 để khớp với một chữ số, điều này tránh được rất nhiều
nhân đôi dấu gạch chéo ngược gây đau đớn.

import re  # de module regular expressions wordt geïmporteerd.
from pathlib import Path
import os

source_dir = Path['/VGw_LanguageDetector']
files = source_dir.glob['*.html']

def parser[]:
    for file in files:
        f = open['file', 'a+', encoding='utf8']
        f2 = open['filename.txt', 'a+', encoding='utf8']  # creëert een nieuwe file om de output naar weg te schrijven
4

Tôi sẽ hoãn mở cửa của

Input the Filename: abc.java                                                                                  
The  extension of the file is : 'java'
21 cho đến đây và sẽ đóng lại ngay lập tức
.

import re  # de module regular expressions wordt geïmporteerd.
from pathlib import Path
import os

source_dir = Path['/VGw_LanguageDetector']
files = source_dir.glob['*.html']

def parser[]:
    for file in files:
        f = open['file', 'a+', encoding='utf8']
        f2 = open['filename.txt', 'a+', encoding='utf8']  # creëert een nieuwe file om de output naar weg te schrijven
5

Tôi hy vọng điều này hữu ích,
Cameron Simpson cs@cskk. Tôi. au

Cảm ơn bạn đã cung cấp mô tả rõ ràng và đầy đủ về vấn đề của mình, hành vi thực tế và dự kiến ​​mà bạn đang gặp phải, đồng thời bao gồm mã được định dạng đẹp mắt của bạn trong một

Input the Filename: abc.java                                                                                  
The  extension of the file is : 'java'
22. Điều này thực sự giúp chúng tôi rất nhiều trong việc đưa ra câu trả lời tốt hơn cho câu hỏi của bạn

Ngoài ra, khi bạn nói tiếng Hà Lan, bạn có lợi thế hơn tất cả chúng tôi khi hiểu Python

[và nếu bạn không tin tôi, hãy
Input the Filename: abc.java                                                                                  
The  extension of the file is : 'java'
23]

Khi tôi đang gõ câu trả lời này, @soil đã đăng một câu xác định chính xác vấn đề chính, rằng bạn đang mở một tệp có tên

f = open['file', 'a+', encoding='utf8']
1 trong thư mục hiện tại và đọc từ đó, thay vì từ tệp bạn dự định [được đặt tên theo biến
f = open['file', 'a+', encoding='utf8']
1] . Tôi thấy @soil đã cập nhật nhận xét của họ để thêm phần này] nối thêm nội dung của từng tệp HTML vào một tệp có tên
Input the Filename: abc.java                                                                                  
The  extension of the file is : 'java'
26 trong thư mục hiện tại. Ngoài ra, câu trả lời của @cameron, cũng được đăng trong khi tôi viết bài này, đã giải quyết một số điểm khác mà tôi đang thực hiện, liên quan đến việc sử dụng các chế độ tệp chính xác cho từng thao tác [điều này sẽ cho phép bạn bắt cả hai lỗi dễ dàng hơn nhiều

Tuy nhiên, cả hai giải pháp của họ để đổi tên tệp trong trường hợp ghi đều không thực sự hiệu quả, vì

f = open['file', 'a+', encoding='utf8']
1 [hoặc
Input the Filename: abc.java                                                                                  
The  extension of the file is : 'java'
29, trong ví dụ của @cameron] không phải là một chuỗi, mà là một đối tượng
Input the Filename: abc.java                                                                                  
The  extension of the file is : 'java'
50 [và nếu là, @

Đây là một điều tốt [và bạn thật thông minh khi sử dụng pathlib], vì điều này thực sự cho phép một giải pháp đơn giản hơn, dễ dàng hơn và mạnh mẽ hơn. Bạn chỉ có thể sử dụng

Input the Filename: abc.java                                                                                  
The  extension of the file is : 'java'
52 /
Input the Filename: abc.java                                                                                  
The  extension of the file is : 'java'
53 để có cùng đường dẫn với tiện ích mở rộng
Input the Filename: abc.java                                                                                  
The  extension of the file is : 'java'
54 thay vì
Input the Filename: abc.java                                                                                  
The  extension of the file is : 'java'
51. tôi. e

import re  # de module regular expressions wordt geïmporteerd.
from pathlib import Path
import os

source_dir = Path['/VGw_LanguageDetector']
files = source_dir.glob['*.html']

def parser[]:
    for file in files:
        f = open['file', 'a+', encoding='utf8']
        f2 = open['filename.txt', 'a+', encoding='utf8']  # creëert een nieuwe file om de output naar weg te schrijven
6

Ngoài ra, vì bạn đang sử dụng pathlib, bạn thực sự có thể sử dụng một cách tiếp cận đơn giản hơn để mở, đọc/ghi và đóng tất cả tệp trong một dòng mà không cần phải sử dụng khối

Input the Filename: abc.java                                                                                  
The  extension of the file is : 'java'
27

Làm cách nào để đọc tệp đầu vào và ghi vào tệp đầu ra Python?

import os openfile = input['Nhập tên tệp đầu vào. '] outputfile = input['Nhập tên tập tin đầu ra. '] nếu hệ điều hành. đường dẫn. isfile[tệp mở]. tệp = open[openfile,'r'] đầu ra = open[outputfile,'w+'] đầu ra. ghi [tập tin

Ý nghĩa của tên tệp đầu ra là gì?

-o tên tệp, --output=tên tệp . Tệp có thể là đối tượng được liên kết một phần hoặc hình ảnh thực thi, tùy thuộc vào tùy chọn dòng lệnh được sử dụng. Specifies the name of the output file. The file can be either a partially-linked object or an executable image, depending on the command-line options used.

Làm cách nào để đọc đầu vào từ tệp trong Python?

Có 6 chế độ truy cập trong python. .
Chỉ đọc ['r']. Mở tệp văn bản để đọc. .
Đọc và Viết ['r+']. Mở tệp để đọc và ghi. .
Chỉ viết ['w']. Mở tệp để ghi. .
Viết và Đọc ['w+']. Mở tệp để đọc và ghi. .
Chỉ nối thêm ['a']. Mở tệp để ghi

Các tệp đầu ra có tự động được mở bằng Python không?

Tệp đầu ra được tự động mở khi dữ liệu được ghi vào chúng . Khi một tệp đầu vào được mở, vị trí đọc của nó ban đầu được đặt thành mục đầu tiên trong tệp. Khi một tệp đã tồn tại được mở ở chế độ nối thêm, nội dung hiện có của tệp sẽ bị xóa.

Chủ Đề