2017-04-14 66 views
2

我用來通過使用putty連接到本地服務器。但現在我需要通過使用腳本python創建一個文件,這個文件的大小很大,所以我必須把它放在本地服務器上;Python:如何在本地服務器中創建文件?

通過使用puty,我必須entre我的主機地址,密碼,名稱和端口。

我該怎麼做?

這是我的腳本:

import numpy as np 
import glob 
import os 
P_Result_File_Path ="Path_To_the_Result_File" 
Folder_path =r'Path_To_my_numpy_files' 
os.chdir(Folder_path) 
npfiles= glob.glob("*.npy") 
npfiles.sort(key=os.path.getmtime) 
print (npfiles) 
loadedFiles = [np.load(npf) for npf in npfiles] 
PArray=np.concatenate(loadedFiles, axis=0) 
np.save(Power_Result_File_Path, PArray) 

P_Result_File_Path文件有一個規模龐大,所以我需要將其保存在本地服務器,問題在這種情況下Path_To_the_Result_File= /home/user/result.npy,所以這條路是未知的,我需要連接到此服務器以創建並放置結果文件。

+0

可以ssh到服務器並運行你的Python如果你不想將文件從一臺機器複製到另一臺機器,那麼腳本就在那裏。有什麼具體的你在這裏尋找? –

+0

@SudheeshSinganamalla謝謝你的回答,請參閱編輯的問題? – Guillaume

回答

0

由於問題的變化,答案被編輯。

如果你不想在P_Result_File_Path存儲在本地計算機上即使是暫時的:

我會建議你到python腳本文件先複製到服務器上,並有執行它(按規定@Sudheesh Singanamalla)。爲了複製你的Python腳本,請看看SCP - http://www.hypexr.org/linux_scp_help.php):

複製從本地主機到遠程主機目錄「欄」

$ scp -r foo [email protected]:/some/remote/directory/bar 

或副主席的目錄「富」相反,您可以從本地機器上將腳本複製到服務器上。 然後你就可以執行Python腳本,你P_Result_File_Path存儲在服務器直接

但是,如果你想在你的本地機器上創建P_Result_File_Path第一,然後將其發送到服務器:

執行您本地機器上的python腳本,然後將結果文件scp傳送到服務器。

希望,這將有助於

更新(因爲生成的文件應該被存儲到本地機器上的Python腳本執行期間服務器) - 作爲一個想法,你可以使用FTP此:

import ftplib 
session = ftplib.FTP('<your_server_address>','USERNAME','PASSWORD') 
session.storbinary('STOR <file_to_send>', PArray) 

如果你仍然會得到錯誤[Errno 11001] getaddrinfo失敗,這很容易谷歌爲什麼發生這種錯誤

+0

謝謝你的回答,它給了我這個錯誤:對於_socket.getaddrinfo(主機,端口,家庭,類型,原型,標誌)中的res: gaierror:[Errno 11001] getaddrinfo失敗 – Guillaume

+0

如果OP已連接使用SSH到服務器,使用'scp'或者其他方法發送文件而不是調用另一個python腳本只是通過FTP發送文件會更簡單嗎? – Simon

+0

@Simon,我已經使用SSH連接了,但我不想在我的桌面上創建該文件,然後將其移至本地服務器,我需要創建並直接在服務器中保存結果文件。 – Guillaume

1

如果您的遠程服務器能夠連接到本地計算機(即您所在的計算機),那麼你可以試試以下內容:

  1. SSH到服務器
  2. 使用scp將文件從本地計算機複製到服務器:
    • scp [email protected]_ip:/path/to/local/python/script.py /server/path/for/saved/file.py
    • SCP採用的語法如下:scp <source> <destination>。在這種情況下,源是本地計算機,目標是您的服務器,但由於您已經登錄到服務器,因此您需要提供本地計算機的登錄信息。
  3. 一旦python腳本具有已被複制到您的服務器,只需在您通過SSH連接的情況下使用python /server/path/for/saved/file.py運行。只要確保你的Python腳本路徑是
    • 所以你不需要將其傳送

如果本應直接在服務器上生成的結果文件服務器上的可行路徑你的遠程服務器不能訪問本地計算機,然後有一些事情你可以做的就是python腳本到你的服務器:

  • 上傳文件的地方(如Dropbox的),並獲得一個鏈接。 SSH到服務器和wget http://link-to-file.py拉python文件到您的服務器。然後像上面,直接使用服務器或... Python的
  • 在本地機器上,使用一些終端使用scp傳輸運行它,但這次是在另一個方向:
    • scp /path/to/local/python/script.py [email protected]_ip:/server/path/for/saved/file.py
    • 方注意:SCP將創建自己的SSH連接,所以你會希望運行第一之前手動ssh到服務器來運行Python文件
+0

我複製了腳本到我的本地服務器,但問題是我必須改變這些路徑:P_Result_File_Path =「Path_To_the_Result_File」Folder_path = r'Path_To_my_numpy_files',所以如果我保留我的實際路徑的錯誤是FileNotFoundError:[Errno 2]否這樣的文件或目錄:這意味着我必須移動本地服務器中的文件的文件夾,但對於我來說,我需要保存包含我的文件在我的本地計算機中的forlder(事實上,我擁有大量的文件),所以真的我不知道該怎麼辦? – Guillaume

+0

我需要把所有生成的文件放在我的本地服務器上 – Guillaume

+0

在這種情況下,你必須在你的python文件中將路徑設置爲本地機器上的路徑(即'P_Result_File_Path'必須是本地路徑),然後運行腳本在本地獲取計算機上的結果文件。然後以上述相同的方式將* results *文件scp到服務器(即不是scp python腳本,scp結果) – Simon

相關問題