2017-02-15 111 views
0

我一直在努力刮板從網站上獲取大量的HTML和圖像。我有刮板工作,但目錄大量填充,導致很難導航。我會如何將它保存到一個子目錄? ,節省了HTML的一部分:保存文件到一個子目錄

t = open(str(current)+".html", 'w+') 
t.write(b) 
t.close() 

而且一部分保存圖像:

​​
+0

您可能想向我們展示您到目前爲止的內容? – davidejones

+0

這不像改變你保存的路徑那麼簡單嗎?我們在這裏錯過了什麼? – WillardSolutions

+0

我有相當多的代碼,你需要看哪個特定的部分? –

回答

2

你只是向我們展示你的代碼的一部分,這是無益的,與說寫一個子目錄很簡單,但首先需要創建一個。現在,我只能給你幾個基本的例子,因爲我不知道你的代碼的其他部分是什麼樣的,希望這裏有所幫助!

def create_folder(self, path): 
     try: 
      if os.path.isdir(path): 
       print("Error: The directory you're attempting to create already exists") # or just pass 
      else: 
       os.makedirs(path) 
     except IOError as exception: 
      raise IOError('%s: %s' % (path, exception.strerror)) 
     return None 

或更容易

os.makedirs("C:\\Example Folder\\") 

或Linux的

os.makedirs('/home/' + os.getlogin() + '/Example Folder/') 

的情況下,然後就寫它像往常一樣,在剛剛提供的路徑子目錄。

def write(self, path, text): 
     try: 
      if os.path.isfile(path): 
       return None # or print and error, or pass etc... 
      else: 
       with open(path, 'w') as outFile: 
        outFile.write(text) 
     except IOError as exception: 
      raise IOError("%s: %s" % (path, exception.strerror)) 

     return None 
在這種情況下

,你就會把路徑到您的子目錄中的「路徑」參數,幷包含「文本」參數中的文本變量。您可以修改此功能追加,寫字節等。

更新信息解決您的意見

一個非常簡單的方法,使小規模的Python程序「更多」跨平臺的,只是像做

if sys.platform == 'win32': 
    print('This is windows') 
elif sys.platform == 'linux2': 
    print('This is some form of linux') 

可以添加,檢查操作系統,然後根據操作系統:)

是的,你是正確的,上面寫功能也覆蓋這些文件,你可以在文件中附加運行塊(添加新沒有overwriti的文字通過改變「W」標誌「A」,像這樣

def append(self, path, text): 
     try: 
      if os.path.isfile(path): 
       with open(path, 'a') as outFile: 
        outFile.write(text) 
     except IOError as exception: 
      raise IOError('%s: %s' % (path, exception.strerror)) 
     return None  

進一步更新納克現有文本):

如果你不使用類你可以刪除的「自我」。

根據你最近的評論是「我自己放什麼」,我真的強烈建議你暫時放棄你的項目,並首先學習python的基礎知識......你可以在以下地方找到教程。

https://www.tutorialspoint.com/python/

https://docs.python.org/3/tutorial/

如果您使用的是較舊的版本,你可以簡單地切換到您所使用的官方網站哪一個,祝你好運,但不幸的是,我可以」在沒有首先知道至少基本知識的情況下,你可以進一步幫助你,對不起!

+0

啊,那看起來不錯。我可以使用try/except並將兩種方法用於跨平臺兼容性嗎? –

+0

是的,你也可以通過簡單的方式找出你正在使用的操作系統,使其更好。 – Afflicted

+0

你的代碼寫入文件似乎重寫't.write()'會做什麼。那是對的嗎?如果是這樣,我將如何使用此方法來保存圖像? –