linuxpythonword
Ⅰ 如何在 linux 上使用 python 讀取 word 文件信息
必須說明:不同於Illustrator、InDesign、CorelDRAW、OpenOffice DRAW、Incscape等工具,Word是流動分頁的,文件內容本身並不存儲分頁結果。具體分頁時斷在哪裡、最後分出多少頁,都需要現場渲染所有的圖文內容之後才能確定。
(簡而言之就是:Word文件中僅包含了一行一行的文本,與頁面設置中指定的頁面尺寸。Word每次打開文件時都會一行一行「擺放」文本數據,發現一頁裝不下了自動新開一頁。當然真正的Word渲染引擎肯定有更復雜的行為。)
從.doc/.docx文件中直接讀出頁面數量,這本身就是個偽命題。所以千萬別在「直接讀取頁面數量」這個方向上尋求方案——軟體開發的技法不好可以改正,但路線錯了必死無疑!
你需要調動一套能夠真的把Word文件的內容渲染出來的工具(支持二次開發的)。只有把Word文件的所有內容渲染成為可以觀看的圖形,才能准確得知頁面的總數。在Linux上很可能LibreOffice可以吧。而在Windows上就當然是用Word本身了。
注意Word的分頁結論是沒有保證的。缺少字體、字形不同、軟體環境不同等各種原因,都會造成不同電腦上打開同一個Word文件的頁數不一致。這一點對伺服器也沒有例外。得到了頁數也只能參考使用,而不要100%信賴。
Ⅱ 如何在 Linux 上使用 Python 讀取 word 文件信息
首先下載安裝win32com
from win32com import client as wc
word = wc.Dispatch('Word.Application')
doc = word.Documents.Open('c:/test')
doc.SaveAs('c:/test.text', 2)
doc.Close()
word.Quit()
這種方式產生的text文檔,不能用python用普通的r方式讀取,為了讓python可以用r方式讀取,應當寫成
doc.SaveAs('c:/test', 4)
注意:系統執行完成後,會自動產生文件後綴txt(雖然沒有指明後綴)。
在xp系統下面,應當
open(r'c:\text','r')
wdFormatDocument = 0
wdFormatDocument97 = 0
wdFormatDocumentDefault = 16
wdFormatDOSText = 4
wdFormatDOSTextLineBreaks = 5
wdFormatEncodedText = 7
wdFormatFilteredHTML = 10
wdFormatFlatXML = 19
wdFormatFlatXMLMacroEnabled = 20
wdFormatFlatXMLTemplate = 21
= 22
wdFormatHTML = 8
wdFormatPDF = 17
wdFormatRTF = 6
wdFormatTemplate = 1
wdFormatTemplate97 = 1
wdFormatText = 2
wdFormatTextLineBreaks = 3
wdFormatUnicodeText = 7
wdFormatWebArchive = 9
wdFormatXML = 11
wdFormatXMLDocument = 12
= 13
wdFormatXMLTemplate = 14
= 15
wdFormatXPS = 18
照著字面意思應該能對應到相應的文件格式,如果你是office 2003可能支持不了這么多格式。word文件轉html有兩種格式可選wdFormatHTML、wdFormatFilteredHTML(對應數字 8、10),區別是如果是wdFormatHTML格式的話,word文件裡面的公式等ole對象將會存儲成wmf格式,而選用 wdFormatFilteredHTML的話公式圖片將存儲為gif格式,而且目測可以看出用wdFormatFilteredHTML生成的HTML 明顯比wdFormatHTML要干凈許多。
當然你也可以用任意一種語言通過com來調用office API,比如PHP.
from win32com import client as wc
word = wc.Dispatch('Word.Application')
doc = word.Documents.Open(r'c:/test1.doc')
doc.SaveAs('c:/test1.text', 4)
doc.Close()
import re
strings=open(r'c:\test1.text','r').read()
result=re.findall('\(\s*[A-D]\s*\)|\(\xa1*[A-D]\xa1*\)|\(\s*[A-D]\s*\)|\(\xa1*[A-D]\xa1*\)',strings)
chan=re.sub('\(\s*[A-D]\s*\)|\(\xa1*[A-D]\xa1*\)|\(\s*[A-D]\s*\)|\(\xa1*[A-D]\xa1*\)','()',strings)
question=open(r'c:\question','a+')
question.write(chan)
question.close()
answer=open(r'c:\answeronly','a+')
for i,a in enumerate(result):
m=re.search('[A-D]',a)
answer.write(str(i+1)+' '+m.group()+'\n')
answer.close()
chan=re.sub(r'\xa3\xa8\s*[A-D]\s*\xa3\xa9','()',strings)
#不要(),容易引起歧義。
Ⅲ 如何在 Linux 上使用 Python 讀取 word 文件信息
請注意,所有的程序在它們第一行都是#!/usr/bin/env/python,也就是說,我們想要Python的解釋器來執行這些腳本。因此,如果你想你的腳本具有執行性,請使用chmod +x your-script.py, 那麼你就可以使用./your-script.py來執行它了(在本文中你將會看到這種方式)
探索platform模塊
platform模塊在標准庫中,它有很多運行我們獲得眾多系統信息的函數。讓我們運行Python解釋器來探索它們中的一些函數,那就從platform.uname()函數開始吧:
>>> import platform
>>> platform.uname()
('Linux', 'fedora.echorand', '3.7.4-204.fc18.x86_64', '#1 SMP Wed Jan 23 16:44:29 UTC 2013', 'x86_64')
如果你已知道linux上的uname命令,那麼你就會認出來這個函數就是這個命令的一個介面。在Python 2上,它會返回一個包含系統類型(或者內核版本),主機名,版本,發布版本,機器的硬體以及處理器信息元組(tuple)。你可以使用下標訪問個別屬性,像這樣:
>>> platform.uname()[0]
'Linux'
在Python 3上,這個函數返回的是一個命名元組:
>>> platform.uname()
uname_result(system='Linux', node='fedora.echorand',
release='3.7.4-204.fc18.x86_64', version='#1 SMP Wed Jan 23 16:44:29
UTC 2013', machine='x86_64', processor='x86_64')
因為返回結果是一個命名元組,這就可以簡單地通過名字來指定特定的屬性,而不是必須記住下標,像這樣:
>>> platform.uname().system
'Linux'
platform模塊還有一些上面屬性的直接介面,像這樣:
>>> platform.system()
'Linux'
>>> platform.release()
'3.7.4-204.fc18.x86_64'
Ⅳ 如何在 Linux 上使用 Python 讀取 word 文件信息
第一步:獲取doc文件的xml組成文件
import zipfiledef get_word_xml(docx_filename):
with open(docx_filename) as f:
zip = zipfile.ZipFile(f)
xml_content = zip.read('word/document.xml')
return xml_content
第二步:解析xml為樹形數據結構
from lxml import etreedef get_xml_tree(xml_string):
return etree.fromstring(xml_string)
第三步:讀取word內容:
def _itertext(self, my_etree):
"""Iterator to go through xml tree's text nodes"""
for node in my_etree.iter(tag=etree.Element):
if self._check_element_is(node, 't'):
yield (node, node.text)def _check_element_is(self, element, type_char):
word_schema = '99999'
return element.tag == '{%s}%s' % (word_schema,type_char)
Ⅳ 如何在 Linux 上使用 Python 讀取 word 文件信息
其實word文檔就是xml合集的包,除了用第三方模塊[不知道有沒有],只能自己用lxml之類的xml模塊自己匹配
Ⅵ 請問怎麼學習Python
分享Python學習路線:
第一階段:Python基礎與Linux資料庫
這是Python的入門階段,也是幫助零基礎學員打好基礎的重要階段。你需要掌握Python基本語法規則及變數、邏輯控制、內置數據結構、文件操作、高級函數、模塊、常用標准庫模板、函數、異常處理、mysql使用、協程等知識點。
學習目標:掌握Python的基本語法,具備基礎的編程能力;掌握Linux基本操作命令,掌握MySQL進階內容,完成銀行自動提款機系統實戰、英漢詞典、歌詞解析器等項目。
第二階段:web全棧
這一部分主要學習web前端相關技術,你需要掌握html、cssJavaScript、JQuery、Bootstrap、web開發基礎、Vue、FIask Views、FIask模板、資料庫操作、FIask配置等知識。
學習目標:掌握web前端技術內容,掌握web後端框架,熟練使用FIask、Tornado、Django,可以完成數據監控後台的項目。
第三階段:數據分析+人工智慧
這部分主要是學習爬蟲相關的知識點,你需要掌握數據抓取、數據提取、數據存儲、爬蟲並發、動態網頁抓取、scrapy框架、分布式爬蟲、爬蟲攻防、數據結構、演算法等知識。
學習目標:可以掌握爬蟲、數據採集,數據機構與演算法進階和人工智慧技術。可以完成爬蟲攻防、圖片馬賽克、電影推薦系統、地震預測、人工智慧項目等階段項目。
第四階段:高級進階
這是Python高級知識點,你需要學習項目開發流程、部署、高並發、性能調優、Go語言基礎、區塊鏈入門等內容。
學習目標:可以掌握自動化運維與區塊鏈開發技術,可以完成自動化運維項目、區塊鏈等項目。
按照上面的Python學習路線圖學習完後,你基本上就可以成為一名合格的Python開發工程師。當然,想要快速成為企業競聘的精英人才,你需要有好的老師指導,還要有較多的項目積累實戰經驗。
對於Python開發有興趣的小夥伴們,不妨先從看看Python開發教程開始入門!B站上有很多的Python教學視頻,從基礎到高級的都有,還挺不錯的,知識點講的很細致,還有完整版的學習路線圖。也可以自己去看看,下載學習試試。
Ⅶ 學習python語言在什麼操作系統下學習比較好
首先需要安裝Python語言,根據個人電腦的系統進入python官網下載頁面下載相應的安裝包。
注意:python語言有python2和python3區別,兩者不兼容,新手學習建議安裝python3的相應版本。python2的應用會逐步減少,初學者學習pyhon2會耽誤學習進度,影響學習效果。等能夠熟練掌握python3以後,如遇到python2的項目,可以很快熟悉。不需要初學者接觸。
Ⅷ Python培訓需要學習哪些內容
Python培訓課程大同小異,整理如下:
Python語言基礎:主要學習Python基礎知識,如Python3、數據類型、字元串、函數、類、文件操作等。
Python語言高級:主要學習Python庫、正則表達式、進程線程、爬蟲、遍歷以及MySQL資料庫。
Pythonweb開發:主要學習HTML、CSS、JavaScript、jQuery等前端知識,掌握python三大後端框架(Django、 Flask以及Tornado)。
Linux基礎:主要學習Linux相關的各種命令,如文件處理命令、壓縮解壓命令、許可權管理以及Linux Shell開發等。
Linux運維自動化開發:主要學習Python開發Linux運維、Linux運維報警工具開發、Linux運維報警安全審計開發、Linux業務質量報表工具開發、Kali安全檢測工具檢測以及Kali 密碼破解實戰。
Python爬蟲:主要學習python爬蟲技術,掌握多線程爬蟲技術,分布式爬蟲技術。
Python數據分析和大數據:主要學習numpy數據處理、pandas數據分析、matplotlib數據可視化、scipy數據統計分析以及python 金融數據分析;Hadoop HDFS、python Hadoop MapRece、python Spark core、python Spark SQL以及python Spark MLlib。
Python機器學習:主要學習KNN演算法、線性回歸、邏輯斯蒂回歸演算法、決策樹演算法、樸素貝葉斯演算法、支持向量機以及聚類k-means演算法。
Ⅸ cat命令和vim的區別
推薦:vim教程
cat命令是linux系統下一個文本列印的命令,用於輸出一個文本的信息到控制台上,該命令的輸入類似於使用word打開一個文檔,但是該文檔不能編輯。
cat命令的原含義為連接(concatenate), 用於連接多個文件內容並輸出到標准輸出流中(標准輸出流默認為屏幕)。實際運用過程中,我們常使用它來顯示文件內容。
vi 命令是linux系統下用於文本查看、編輯的命令,不僅僅可以查看,還可以編輯。
vi 是」Visual Interface」 的簡稱,它在Linux 上的地位就彷彿Edit 程序在DOS上一樣。它可以執行輸出、刪除、查找、替換、塊操作等眾多文本操作,而且用戶可以根據自己的需要對其進行定製,這是其他編輯程序所沒有的。
vi 不是一個排版程序,它不象Word 或WPS 那樣可以對字體、格式、段落等其他屬性進行編排,它只是一個文本編輯程序。
更多python知識請關注python視頻教程。
Ⅹ linux下運行python腳本,屏幕上輸入一行字元,怎麼顯示這個腳本的結果呢按回車不顯示結果呀
執行你的腳本,你在給sys.stdin輸入內容的時候,回車也是內容的一部分,stdin會等到一個eof標識用來判斷一次輸入的結束(EOF(End Of File),在操作系統中表示資料源無更多的資料可讀取)。
linux中,eof標識是ctrl+d,所以你可以嘗試輸入一些內容,然後執行ctrl+d