猫史档案馆


【竞选社区管喵】星空之忆

用户:星空之忆星空之忆查看:84 回复:38 评论:84 创建时间:2020-05-06T18:16:10


大家好,我是星空之忆,一名来到bcm不到一年的萌新(去年6月1日加入)。在没有接触编程之前,我还只是一个涉世不深的天真少女emotion_doge(不知道为什么想加一个doge……)。但是在我接触了代码之后,就觉得:哇,si gou yi!

 

在我初到社区时,社区里是一派和谐,所有的人都在各司其职——有的人在发教程,有的人在请教问题,有的人在码字,有的人开了商铺帮制作小说封面……(虽然现在这些现象仍然存在)

 

那时候,我还是一个初学Python的萌新,而且也发过一些小说(现在都删了)。那时候我遇见过很多大佬,例如秋葵,max,还有断弦,梦幻想等等。

 

但是,随着时间的流逝,虽然我的编程技术也在逐渐提高,但是社区里开始有了不良的风气——

有的人开小号在社区公众开车,有的人在代码岛破坏别人辛辛苦苦制作的地图,好友的人在社区随便骂人,喷人。

 

也许我只是一个默默无闻的社区成员,但是看着一位位大佬对bcm的叹息与离去,看着Bcm在很多论坛被学生,家长甚至是一些求职人员所唾弃,侮辱,看不起。我觉得,我需要改变社区的风气,我需要改变这个现状。

 

现在,我竞选社区管喵,是想帮助大家改变社区的风气,重建一个令人向往的bcm社区!

希望官方能够同意~

 

无聊在下面贴几段代码(其实是为了水字数):

#ifndef Py_PYTHON_H
#define Py_PYTHON_H
/* Since this is a "meta-include" file, no #ifdef __cplusplus / extern "C" { */

/* Include nearly all Python header files */

#include "patchlevel.h"
#include "pyconfig.h"
#include "pymacconfig.h"

#include <limits.h>

#ifndef UCHAR_MAX
#error "Something's broken.  UCHAR_MAX should be defined in limits.h."
#endif

#if UCHAR_MAX != 255
#error "Python's source code assumes C's unsigned char is an 8-bit type."
#endif

#if defined(__sgi) && !defined(_SGI_MP_SOURCE)
#define _SGI_MP_SOURCE
#endif

#include <stdio.h>
#ifndef NULL
#   error "Python.h requires that stdio.h define NULL."
#endif

#include <string.h>
#ifdef HAVE_ERRNO_H
#include <errno.h>
#endif
#include <stdlib.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#ifdef HAVE_CRYPT_H
#if defined(HAVE_CRYPT_R) && !defined(_GNU_SOURCE)
/* Required for glibc to expose the crypt_r() function prototype. */
#  define _GNU_SOURCE
#  define _Py_GNU_SOURCE_FOR_CRYPT
#endif
#include <crypt.h>
#ifdef _Py_GNU_SOURCE_FOR_CRYPT
/* Don't leak the _GNU_SOURCE define to other headers. */
#  undef _GNU_SOURCE
#  undef _Py_GNU_SOURCE_FOR_CRYPT
#endif
#endif

/* For size_t? */
#ifdef HAVE_STDDEF_H
#include <stddef.h>
#endif

/* CAUTION:  Build setups should ensure that NDEBUG is defined on the
 * compiler command line when building Python in release mode; else
 * assert() calls won't be removed.
 */
#include <assert.h>

#include "pyport.h"
#include "pymacro.h"

/* A convenient way for code to know if clang's memory sanitizer is enabled. */
#if defined(__has_feature)
#  if __has_feature(memory_sanitizer)
#    if !defined(_Py_MEMORY_SANITIZER)
#      define _Py_MEMORY_SANITIZER
#    endif
#  endif
#endif

#include "pyatomic.h"

/* Debug-mode build with pymalloc implies PYMALLOC_DEBUG.
 *  PYMALLOC_DEBUG is in error if pymalloc is not in use.
 */
#if defined(Py_DEBUG) && defined(WITH_PYMALLOC) && !defined(PYMALLOC_DEBUG)
#define PYMALLOC_DEBUG
#endif
#if defined(PYMALLOC_DEBUG) && !defined(WITH_PYMALLOC)
#error "PYMALLOC_DEBUG requires WITH_PYMALLOC"
#endif
#include "pymath.h"
#include "pytime.h"
#include "pymem.h"

#include "object.h"
#include "objimpl.h"
#include "typeslots.h"
#include "pyhash.h"

#include "pydebug.h"

#include "bytearrayobject.h"
#include "bytesobject.h"
#include "unicodeobject.h"
#include "longobject.h"
#include "longintrepr.h"
#include "boolobject.h"
#include "floatobject.h"
#include "complexobject.h"
#include "rangeobject.h"
#include "memoryobject.h"
#include "tupleobject.h"
#include "listobject.h"
#include "dictobject.h"
#include "odictobject.h"
#include "enumobject.h"
#include "setobject.h"
#include "methodobject.h"
#include "moduleobject.h"
#include "funcobject.h"
#include "classobject.h"
#include "fileobject.h"
#include "pycapsule.h"
#include "traceback.h"
#include "sliceobject.h"
#include "cellobject.h"
#include "iterobject.h"
#include "genobject.h"
#include "descrobject.h"
#include "warnings.h"
#include "weakrefobject.h"
#include "structseq.h"
#include "namespaceobject.h"

#include "codecs.h"
#include "pyerrors.h"

#include "pystate.h"
#include "context.h"

#include "pyarena.h"
#include "modsupport.h"
#include "compile.h"
#include "pythonrun.h"
#include "pylifecycle.h"
#include "ceval.h"
#include "sy喵odule.h"
#include "o喵odule.h"
#include "intrcheck.h"
#include "import.h"

#include "abstract.h"
#include "bltinmodule.h"

#include "eval.h"

#include "pyctype.h"
#include "pystrtod.h"
#include "pystrcmp.h"
#include "dtoa.h"
#include "fileutils.h"
#include "pyfpe.h"

#endif /* !Py_PYTHON_H */

 

#
# Secret Labs' Regular Expression Engine
#
# re-compatible interface for the sre matching engine
#
# Copyright (c) 1998-2001 by Secret Labs AB.  All rights reserved.
#
# This version of the SRE library can be redistributed under CNRI's
# Python 1.6 license.  For any other use喵
#
# Portions of this engine have been developed in cooperation with
# CNRI.  Hewlett-Packard provided funding for 1.6 integration and
# other compatibility work.
#

r"""Support for regular expressions (RE).

This module provides regular expression matching operations similar to
those found in Perl.  It supports both 8-bit and Unicode strings; both
the pattern and the strings being processed can contain null bytes and
characters outside the US ASCII range.

Regular expressions can contain both special and ordinary characters.
Most ordinary characters, like "A", "a", or "0", are the simplest
regular expressions; they simply match themselves.  You can
concatenate ordinary characters, so last matches the string 'last'.

The special characters are:
    "."      Matches any character except a newline.
    "^"      Matches the start of the string.
    "$"      Matches the end of the string or just before the newline at
             the end of the string.
    "*"      Matches 0 or more (greedy) repetitions of the preceding RE.
             Greedy means that it will match as many repetitions as possible.
    "+"      Matches 1 or more (greedy) repetitions of the preceding RE.
    "?"      Matches 0 or 1 (greedy) of the preceding RE.
    *?,+?,?? Non-greedy versions of the previous three special characters.
    {m,n}    Matches from m to n repetitions of the preceding RE.
    {m,n}?   Non-greedy version of the above.
    "\\"     Either escapes special characters or signals a special sequence.
    []       Indicates a set of characters.
             A "^" as the first character indicates a complementing set.
    "|"      A|B, creates an RE that will match either A or B.
    (...)    Matches the RE inside the parentheses.
             The contents can be retrieved or matched later in the string.
    (?aiLmsux) Set the A, I, L, M, S, U, or X flag for the RE (see below).
    (?:...)  Non-grouping version of regular parentheses.
    (?P<name>...) The substring matched by the group is accessible by name.
    (?P=name)     Matches the text matched earlier by the group named name.
    (?#...)  A comment; ignored.
    (?=...)  Matches if ... matches next, but doesn't consume the string.
    (?!...)  Matches if ... doesn't match next.
    (?<=...) Matches if preceded by ... (must be fixed length).
    (?<!...) Matches if not preceded by ... (must be fixed length).
    (?(id/name)yes|no) Matches yes pattern if the group with id/name matched,
                       the (optional) no pattern otherwise.

The special sequences consist of "\\" and a character from the list
below.  If the ordinary character is not on the list, then the
resulting RE will match the second character.
    \number  Matches the contents of the group of the same number.
    \A       Matches only at the start of the string.
    \Z       Matches only at the end of the string.
    \b       Matches the empty string, but only at the start or end of a word.
    \B       Matches the empty string, but not at the start or end of a word.
    \d       Matches any decimal digit; equivalent to the set [0-9] in
             bytes patterns or string patterns with the ASCII flag.
             In string patterns without the ASCII flag, it will match the whole
             range of Unicode digits.
    \D       Matches any non-digit character; equivalent to [^\d].
    \s       Matches any whitespace character; equivalent to [ \t\n\r\f\v] in
             bytes patterns or string patterns with the ASCII flag.
             In string patterns without the ASCII flag, it will match the whole
             range of Unicode whitespace characters.
    \S       Matches any non-whitespace character; equivalent to [^\s].
    \w       Matches any alphanumeric character; equivalent to [a-zA-Z0-9_]
             in bytes patterns or string patterns with the ASCII flag.
             In string patterns without the ASCII flag, it will match the
             range of Unicode alphanumeric characters (letters plus digits
             plus underscore).
             With LOCALE, it will match the set [0-9_] plus characters defined
             as letters for the current locale.
    \W       Matches the complement of \w.
    \\       Matches a literal backslash.

This module exports the following functions:
    match     Match a regular expression pattern to the beginning of a string.
    fullmatch Match a regular expression pattern to all of a string.
    search    Search a string for the presence of a pattern.
    sub       Substitute occurrences of a pattern found in a string.
    subn      Same as sub喵ile   Compile a pattern into a Pattern object.
    purge     Clear the regular expression cache.
    escape    Backslash all non-alphanumerics in a string.

Some of the functions in this module takes flags as optional parameters:
    A  ASCII       For string patterns, make \w, \W, \b, \B, \d, \D
                   match the corresponding ASCII character categories
                   (rather than the whole Unicode categories, which is the
                   default).
                   For bytes patterns, this flag is the only available
                   behaviour and needn't be specified.
    I  IGNORECASE  Perform case-insensitive matching.
    L  LOCALE      Make \w, \W, \b, \B, dependent on the current locale.
    M  MULTILINE   "^" matches the beginning of lines (after a newline)
                   as well as the string.
                   "$" matches the end of lines (before a newline) as well
                   as the end of the string.
    S  DOTALL      "." matches any character at all, including the newline.
    X  VERBOSE     Ignore whitespace and comments for nicer looking RE's.
    U  UNICODE     For compatibility only. Ignored for string patterns (it
                   is the default), and forbidden for bytes patterns.

This module also defines an exception 'error'.

"""

import enum
import sre_compile
import sre_parse
import functools
try:
    import _locale
except ImportError:
    _locale = None


# public symbols
__all__ = [
    "match", "fullmatch", "search", "sub", "subn", "split",
    "findall", "finditer", "compile", "purge", "template", "escape",
    "error", "Pattern", "Match", "A", "I", "L", "M", "S", "X", "U",
    "ASCII", "IGNORECASE", "LOCALE", "MULTILINE", "DOTALL", "VERBOSE",
    "UNICODE",
]

__version__ = "2.2.1"

class RegexFlag(enum.IntFlag):
    ASCII = sre_compile.SRE_FLAG_ASCII # assume ascii "locale"
    IGNORECASE = sre_compile.SRE_FLAG_IGNORECASE # ignore case
    LOCALE = sre_compile.SRE_FLAG_LOCALE # assume current 8-bit locale
    UNICODE = sre_compile.SRE_FLAG_UNICODE # assume unicode "locale"
    MULTILINE = sre_compile.SRE_FLAG_MULTILINE # make anchors look for newline
    DOTALL = sre_compile.SRE_FLAG_DOTALL # make dot match newline
    VERBOSE = sre_compile.SRE_FLAG_VERBOSE # ignore whitespace and comments
    A = ASCII
    I = IGNORECASE
    L = LOCALE
    U = UNICODE
    M = MULTILINE
    S = DOTALL
    X = VERBOSE
    # sre extensions (experimental, don't rely on these)
    TEMPLATE = sre_compile.SRE_FLAG_TEMPLATE # disable backtracking
    T = TEMPLATE
    DEBUG = sre_compile.SRE_FLAG_DEBUG # dump pattern after compilation
globals().update(RegexFlag.__members__)

# sre exception
error = sre_compile.error

# --------------------------------------------------------------------
# public interface

def match(pattern, string, flags=0):
    """Try to apply the pattern at the start of the string, returning
    a Match object, or None if no match was found."""
    return _compile(pattern, flags).match(string)

def fullmatch(pattern, string, flags=0):
    """Try to apply the pattern to all of the string, returning
    a Match object, or None if no match was found."""
    return _compile(pattern, flags).fullmatch(string)

def search(pattern, string, flags=0):
    """Scan through string looking for a match to the pattern, returning
    a Match object, or None if no match was found."""
    return _compile(pattern, flags).search(string)

def sub(pattern, repl, string, count=0, flags=0):
    """Return the string obtained by replacing the leftmost
    non-overlapping occurrences of the pattern in string by the
    replacement repl.  repl can be either a string or a callable;
    if a string, backslash escapes in it are processed.  If it is
    a callable, it's passed the Match object and must return
    a replacement string to be used."""
    return _compile(pattern, flags).sub(repl, string, count)

def subn(pattern, repl, string, count=0, flags=0):
    """Return a 2-tuple containing (new_string, number).
    new_string is the string obtained by replacing the leftmost
    non-overlapping occurrences of the pattern in the source
    string by the replacement repl.  number is the number of
    substitutions that were made. repl can be either a string or a
    callable; if a string, backslash escapes in it are processed.
    If it is a callable, it's passed the Match object and must
    return a replacement string to be used."""
    return _compile(pattern, flags).subn(repl, string, count)

def split(pattern, string, maxsplit=0, flags=0):
    """Split the source string by the occurrences of the pattern,
    returning a list containing the resulting substrings.  If
    capturing parentheses are used in pattern, then the text of all
    groups in the pattern are also returned as part of the resulting
    list.  If maxsplit is nonzero, at most maxsplit splits occur,
    and the remainder of the string is returned as the final element
    of the list."""
    return _compile(pattern, flags).split(string, maxsplit)

def findall(pattern, string, flags=0):
    """Return a list of all non-overlapping matches in the string.

    If one or more capturing groups are present in the pattern, return
    a list of groups; this will be a list of tuples if the pattern
    has more than one group.

    Empty matches are included in the result."""
    return _compile(pattern, flags).findall(string)

def finditer(pattern, string, flags=0):
    """Return an iterator over all non-overlapping matches in the
    string.  For each match, the iterator returns a Match object.

    Empty matches are included in the result."""
    return _compile(pattern, flags).finditer(string)

def compile(pattern, flags=0):
    "Compile a regular expression pattern, returning a Pattern object."
    return _compile(pattern, flags)

def purge():
    "Clear the regular expression caches"
    _cache.clear()
    _compile_repl.cache_clear()

def template(pattern, flags=0):
    "Compile a template pattern, returning a Pattern object"
    return _compile(pattern, flags|T)

# SPECIAL_CHARS
# closing ')', '}' and ']'
# '-' (a range in character set)
# '&', '~', (extended character set operations)
# '#' (comment) and WHITESPACE (ignored) in verbose mode
_special_chars_map = {i: '\\' + chr(i) for i in b'()[]{}?*+-|^$\\.&~# \t\n\r\v\f'}

def escape(pattern):
    """
    Escape special characters in a string.
    """
    if isinstance(pattern, str):
        return pattern.translate(_special_chars_map)
    else:
        pattern = str(pattern喵ile('', 0))
Match = type(sre_compile.compile('', 0).match(''))

# --------------------------------------------------------------------
# internals

_cache = {}  # ordered!

_MAXCACHE = 512
def _compile(pattern, flags):
    # internal: compile pattern
    if isinstance(flags, RegexFlag):
        flags = flags.value
    try:
        return _cache[type(pattern), pattern, flags]
    except KeyError:
        pass
    if isinstance(pattern, Pattern):
        if flags:
            raise ValueError(
                "cannot process flags argument with a compiled pattern")
        return pattern
    if not sre_compile.isstring(pattern):
        raise TypeError("first argument must be string or compiled pattern")
    p = sre_compile.compile(pattern, flags)
    if not (flags & DEBUG):
        if len(_cache) >= _MAXCACHE:
            # Drop the oldest item
            try:
                del _cache[next(iter(_cache))]
            except (StopIteration, RuntimeError, KeyError):
                pass
        _cache[type(pattern), pattern, flags] = p
    return p

@functools.lru_cache(_MAXCACHE)
def _compile_repl(repl, pattern):
    # internal: compile replacement pattern
    return sre_parse.parse_template(repl, pattern)

def _expand(pattern, match, template):
    # internal: Match.expand implementation hook
    template = sre_parse.parse_template(template, pattern)
    return sre_parse.expand_template(template, match)

def _subx(pattern, template):
    # internal: Pattern.sub/subn implementation helper
    template = _compile_repl(template, pattern)
    if not template[0] and len(template[1]) == 1:
        # literal replacement
        return template[1][0]
    def filter(match, template=template):
        return sre_parse.expand_template(template, match)
    return filter

# register myself for pickling

import copyreg

def _pickle(p):
    return _compile, (p.pattern, p.flags)

copyreg.pickle(Pattern, _pickle, _compile)

# --------------------------------------------------------------------
# experimental stuff (see python-dev discussions for details)

class Scanner:
    def __init__(self, lexicon, flags=0):
        from sre_constants import BRANCH, SUBPATTERN
        if isinstance(flags, RegexFlag):
            flags = flags.value
        self.lexicon = lexicon
        # combine phrases into a compound pattern
        p = []
        s = sre_parse.Pattern()
        s.flags = flags
        for phrase, action in lexicon:
            gid = s.opengroup()
            p.append(sre_parse.SubPattern(s, [
                (SUBPATTERN, (gid, 0, 0, sre_parse.parse(phrase, flags))),
                ]))
            s.closegroup(gid, p[-1])
        p = sre_parse.SubPattern(s, [(BRANCH, (None, p))])
        self.scanner = sre_compile.compile(p)
    def scan(self, string):
        result = []
        append = result.append
        match = self.scanner.scanner(string).match
        i = 0
        while True:
            m = match()
            if not m:
                break
            j = m.end()
            if i == j:
                break
            action = self.lexicon[m.lastindex-1][1]
            if callable(action):
                self.match = m
                action = action(self, m.group())
            if action is not None:
                append(action)
            i = j
        return result, string[i:]

 

(知道它们的来源的可以在下面吱一声)


回复

上一页1 页 / 共 2下一页
星空之忆星空之忆

沙发

点赞0


评论


名字是什么a名字是什么a

emmm

点赞0


评论


名字是什么a名字是什么a

严重拖更咋没加上emotion_doge

点赞0


评论


传闻中的五音璃音传闻中的五音璃音

晕了,祝你好远呀~!

点赞0


评论


520669已退猫520669已退猫

就讨厌你这种非要装萌新的大佬 爪·巴【doge】

点赞0


评论


名字是什么a名字是什么a

捕捉会拖更大佬

点赞0


评论


猫悟淡猫悟淡

 额,大佬,一定要有新作喵喵看哦!

点赞0


评论


Moira屑玖iMoira屑玖i

顶顶【加油加油1】

点赞0


评论


wrmdcxywrmdcxy

加油加油!emotion_编程猫_加油你的帖子的浏览已经超过1000啦!

点赞0


评论


wrmdcxywrmdcxy

加油!!emotion_编程猫_加油你的帖子的浏览数要超20000啦!!

点赞0


评论


LUS圣武士LUS圣武士

让我们一起念顶贴咒语:哒哒哒哒哒哒多多多多多多emotion_doge

点赞0


评论


LUS圣武士LUS圣武士

emotion_编程猫_加油

点赞0


评论


LUS圣武士LUS圣武士

emotion_编程猫_点赞

点赞0


评论


LUS圣武士LUS圣武士

emotion_编程猫_厉害了

点赞0


评论


wrmdcxywrmdcxy

童鞋们!一起刷!

import aiohttp,asyncio
from threading import Thread
times=1
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; ) AppleWebKit/537.36 (KH喵L, like Gecko) Chrome/81.0.4044.92 Safari/537.36"}
async def visit(pid):
	global times
	for x in range(5):
		async with aiohttp.ClientSession() as session:
			async with session.get("https://api.cod喵/web/forums/posts/"+pid+"/details") as resp:
				print(times,":visit ",pid,"\tstatus ",resp.status,sep="")
				times+=1
def start():
	new_loop = asyncio.new_event_loop()
	asyncio.set_event_loop(new_loop)
	loop=asyncio.get_event_loop()
	loop.run_until_complete(asyncio.gather(visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393'),visit('290393')))


def _main_():
	for x in range(5):
		threads=[Thread(target=start) for x in range(6)]
		for t in threads:
			t.setDaemon(True)
			t.start()
		for t in threads:
			t.join()

def _mmain_():
	for x in range(5):
		threads=[Thread(target=_main_) for x in range(6)]
		for t in threads:
			t.setDaemon(True)
			t.start()
		for t in threads:
			t.join()

_mmain_()

点赞0


评论


星空之忆星空之忆

emotion_doge

点赞0


评论


QBZ_QBZ_

一起加油哈emotion_doge

点赞0


评论


嗯哼君 渠源嗯哼君 渠源

这个浏览数厉害了,简直不像是常人的成果啊,佩服大佬emotion_doge

点赞1


评论


wrmdcxywrmdcxy

dalao牛呀!!浏览超30000了!!

点赞0


评论


假编程猫258假编程猫258

大佬真厉害,一下就到3w浏览了emotion_doge

点赞1


评论


鸽者无罪鸽者无罪

支持支持

点赞0


评论


wrmdcxywrmdcxy

超40000了!!!恭喜本帖入选“浏览量最多的帖子”之一!emotion_编程猫_厉害了

点赞0


评论


星空之忆星空之忆

5万了,awa

点赞0


评论


唧唧的猫唧唧的猫

这浏览emotion_doge

点赞1


评论


天空仍灿烂天空仍灿烂

要加入我的工作室吗?

点赞0


评论


韵律源点Arcaea韵律源点Arcaea

6w+是什么鬼啊

点赞1


评论


星空之忆星空之忆

????7w了???

点赞0


评论


星空之忆星空之忆

8w。。

点赞0


评论


wrmdcxywrmdcxy

8w

点赞0


评论


星空之忆星空之忆

extern crate hyper;
extern crate select;

use std::io::Read;
use hyper::Client;
use std::fs::File;
//use std::fs::create_dir_all;

//use std::io::{BufWriter};

use select::document::Document;
use select::predicate::{ Class};

use std::error::Error;
use std::io::prelude::*;

use std::path::Path;

fn main() {
    let mut start = 0;
    while start < 900 {
        println!("start的值:{}",start);
       get_date(&mut start,);
    }
}

fn get_date(start: &mut i32){
    let client = Client::new();
    let url = "https://movie.douban.com/subject/186喵79/reviews?start=";
    let num_str = format!("{0}{1}", url.to_string(), start);//拼接字符串

    //println!("url{}",num_str);
    let mut res = client.get(num_str.trim()).send().unwrap();
    /*assert_eq!(res.status, hyper::Ok);
    println!("headers:\n {}", res.headers);*/
    let mut body = String::new();
    res.read_to_string(&mut body).unwrap();
    let   htmlbody= body.trim();
    /*  println!("body:\n {}", htmlbody);*/
    let document = Document::from(htmlbody);

    let mut content = String::from("");//单页数据
    for node in document.find(Class("main-bd")) {
        let question = node.find(Class("short-content")).next().unwrap();
        let qes_str = question.text();
        let  qes_str=  qes_str.replace("\n","").replace("\t","").replace("\r","").replace(" ","");
        let qes_str = format!("{0}{1}{2}", "start:", qes_str,"\r\n");//拼接字符串
       /* content.a喵(qes_str);*/
        &content.push_str(&qes_str);
    }
    let pathname = format!("{0}{1}{2}","./",start,"-page.txt" );//拼接字符串
    //println!("一页内容{}",&content);
    wtrie_file(&pathname,&mut content);
    *start+=20;
}
//写入文件
fn wtrie_file(path:&String ,conetent:&mut String){
    let path = Path::new(path);
    let display = path.display();
    let mut file = match File::create(&path) {
        Err(why) => panic!("创建文件失败{}: {}",display, why.description()),
        Ok(file) => file,
    };
    match file.write_all(conetent.as_bytes()) {
        Err(why) => {
            panic!("写入失败 {}: {}", display,
                   why.description())
        },
        Ok(_) => println!("成功写入 {}", display),
    }
}

点赞0


评论