簡體   English   中英

這個 C/C++ 中的 python 代碼

[英]This python code in C/C++

我有這個代碼:

#!/usr/bin/python

import urllib

print 'Insert page to download:'
page = raw_input()

filehandle = urllib.urlopen(page)
myFile = open('file.html','w')

for lines in filehandle.readlines():
    myFile.write(lines  )

myFile.close()
filehandle.close()

這基本上只是下載輸入的網頁並將其寫入文件.html。

我想知道如何使用 C/C++ 做到這一點。 如果有辦法但它不像 python 那樣直接,我可以做些什么或搜索以獲得類似的結果?

另外,我知道套接字編程的存在,但我對它還不是很好,我只是在尋找一個快速而骯臟的解決方案。

謝謝你。

試試libcurl庫,它為 C(以及包括 C++ 在內的許多其他語言)提供 URL 下載功能。

如果您正在為 Windows 編寫代碼,您還可以使用Windows Internet庫。

快速而骯臟的答案是從 C++ 代碼中使用 python 代碼和 shell 代碼,或嵌入 Z23EEEB4347BDD256DZ 代碼和運行代碼 ...

無論如何,您想要的是用於 C/C++ 的 http 客戶端庫。 我有使用 C 的libcurl的經驗,它和那種事情一樣令人愉快!

我第二個 libcurl,這是我通常用於我的快速和骯臟的解決方案。

通常,當您在桌面環境(如 GNOME 和 KDE)中編程時,您可以使用該環境中的功能,這些功能可在 GUI 中使用,並且更易於與文件選擇器 window、進度條等一起使用。c。

如果你為 GNOME 環境編程(或安裝了 GNOME 庫),那么這個程序幾乎和你的 Python 程序做同樣的事情,除了它不轉換行尾字符,它逐字復制 CR 和 LF,並且它使用程序 arguments 而不是提示用戶輸入。 哦,它沒有給出錯誤信息,它只是退出,沒有任何線索說明原因。 但它確實有一個優點,它可以在 gnome 可以處理的任何兩個文件之間進行復制,無論是本地文件還是遠程文件系統中的文件,並且您可以使用沒有路徑的文件名或使用 ~ 作為您的主目錄。

/*
 File: mycopy.c

 Compile with: gcc -Wall -g -c mycopy.c `pkg-config --cflags gio-2.0`
 Link with: gcc -Wall -g mycopy.o -o mycopy `pkg-config --libs gio-2.0`

 See: http://stackoverflow.com/questions/6726499/this-python-code-in-c-c
*/

#include <glib-object.h>
#include <gio/gio.h>
#include <stdlib.h>

int main( int argc, char*argv[])
{   GFile *source, *dest;
    gboolean success;

    if( argc!=3 )
        exit( 2 );

    g_type_init();


    source  = g_file_new_for_commandline_arg( argv[1] );
    dest    = g_file_new_for_commandline_arg( argv[2] );

    success = g_file_copy( source, dest, 0, 0, 0, 0, 0 );

    if( !success )
        exit( 2 );

    exit( 0 );
}

如果您想在 Linux 中真正快速地從網頁復制,則將目錄(又名“web 站點”)安裝到文件系統中,並在代碼中使用 splice(參見man 2 splice )來傳輸數據。 我最近沒有檢查過這個,但是我上次檢查時大多數現成的庫都沒有這樣做。 You can also (preferably?) do this with the shell commands mount and cp (last time I benchmarked, this was faster then C code using libcurl, or the curl or wget shell commands, for any large-ish file).

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM